2016-12-17 103 views
0

我写了这个代码:要关闭对话框

  button.Click += (s, e) => 
      { 
       string strDialog = "Hello"; 
       Dialog dialog = new Dialog(this); 
       dialog.Window.RequestFeature(WindowFeatures.NoTitle); 
       dialog.SetContentView(Resource.Layout.SDialog); 
       TextView text = (TextView)dialog.FindViewById(Resource.Id.dialog_text_view); 
       text.Text = strDialog; 
(Button)dialog.FindViewById(Resource.Id.dismiss_dialog_button); 
       dialogButton.Click += delegate 
       { 
        dialog.Dismiss(); 
       }; 
       dialog.Show(); 
      }; 

当我点击“按钮”,对话框打开。当我不关闭对话框并再次点击“按钮”时,对话框关闭。在这种情况下,对话被解雇了吗?

回答

1
private void Button_Click(object sender, System.EventArgs e) 
{ 
    string strDialog = "Hello"; 
    Dialog dialog = new Dialog(this); 
    // dialog.SetCanceledOnTouchOutside(false); 
    dialog.Window.RequestFeature(WindowFeatures.NoTitle); 
    dialog.SetContentView(Resource.Layout.DialogView); 
    dialog.DismissEvent += Dialog_DismissEvent; 
    dialog.CancelEvent += Dialog_CancelEvent; 
    TextView text = (TextView)dialog.FindViewById(Resource.Id.MyTextView); 
    text.Text = strDialog; 
    var dialogButton = (Button)dialog.FindViewById(Resource.Id.DismissBtn); 
    dialogButton.Click += delegate 
    { 
     dialog.Dismiss(); 
    }; 
    dialog.Show(); 

} 

private void Dialog_CancelEvent(object sender, System.EventArgs e) 
{ 
    //cancel 
} 

private void Dialog_DismissEvent(object sender, System.EventArgs e) 
{ 
    //dismiss 
} 

我在Dialog_CancelEventDialog_DismissEvent设置两个断点。 Dialog_CancelEvent被称为第一个,然后Dialog_DismissEvent被调用时触摸窗口的边界忽略dialog.If通过单击DismissBtn关闭对话框,只调用Dialog_DismissEvent.无论哪种方式,该对话框被取消。

如果您不希望在对话框外单击时忽略对话框,则可以使用dialog.SetCanceledOnTouchOutside(false)