this.DialogResult = DialogResult.OK;会不会彻底关闭窗体
时间: 2024-03-15 16:46:57 浏览: 178
`this.DialogResult = DialogResult.OK;` 语句不会彻底关闭窗体,它只会将窗体的 `DialogResult` 属性设置为 `DialogResult.OK`,并返回 `DialogResult.OK` 值到调用该窗体的代码中。
如果要彻底关闭窗体,可以在设置 `DialogResult` 属性之后调用 `this.Close()` 方法来关闭窗体,或者直接调用 `this.DialogResult = DialogResult.OK;` 语句所在的窗体的 `Close()` 方法来关闭窗体。
另外,需要注意的是,当窗体的 `DialogResult` 属性被设置为 `DialogResult.OK` 或 `DialogResult.Cancel` 时,窗体会自动关闭。如果需要在设置 `DialogResult` 属性之后执行一些其他的操作,可以在窗体的 `FormClosing` 事件中判断 `DialogResult` 属性的值,并在必要的情况下取消窗体的关闭操作。例如:
```csharp
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.DialogResult == DialogResult.OK)
{
// 执行其他操作
}
}
```
相关问题
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections; namespace CTCGUI.CTCForms.HistoryPopups { public partial class frmDatalog_SelectParam : Form { public frmDatalog_SelectParam() { InitializeComponent(); } private ArrayList selectedParameters; public ArrayList SelectedParameters { get { return selectedParameters; } } public void setListItem(ArrayList al) { foreach (string param in al) { ListViewItem lv = new ListViewItem(new string[]{param}, -1); lv.StateImageIndex = 0; listView1.Items.Add(lv); } } private void button1_Click(object sender, EventArgs e) { if(selectedParameters == null) { selectedParameters = new ArrayList(); } foreach (ListViewItem lv in listView1.Items) { if (lv.Checked) { selectedParameters.Add(lv.SubItems[0].Text); } } this.DialogResult = System.Windows.Forms.DialogResult.OK; } } }
这是一个C#的Windows窗体应用程序,其中包含一个名为"frmDatalog_SelectParam"的窗体类。它的主要功能是在一个ListView控件中显示一些数据,并允许用户选择其中的一些数据并返回选择的结果。其中,selectedParameters是一个ArrayList,用于存储用户选择的数据。setListItem方法用于向ListView控件中添加数据。button1_Click事件处理程序用于处理用户点击窗体上的按钮操作,并将选定的数据存储在selectedParameters中,最后返回一个DialogResult.OK。
public partial class SelectUser : Form { public SelectUser() { InitializeComponent(); } private void SelectUser_Load(object sender, EventArgs e) { DataTable dt = SqlHelper.GetDataSet("select UserGUID,UserCode,UserName from MyUser"); this.dataGridView1.DataSource = dt; } private void btnSelect_Click(object sender, EventArgs e) { DataTable dt = SqlHelper.GetDataSet($"select UserGUID,UserCode,UserName from MyUser where UserCode like '%{this.txtCondition.Text}%' or UserName like '%{this.txtCondition.Text}%' "); this.dataGridView1.DataSource = dt; } private void button2_Click(object sender, EventArgs e) { var row = this.dataGridView1.SelectedRows; if (row.Count <= 0) { MessageBox.Show(""); return; } var UserGUID = row[0].Cells["UserGUID"].Value; if ((Guid)UserGUID == MyUser.UserGUID) { MessageBox.Show("不能删除当前用户"); return; } if(MessageBox.Show("确定要删除选中的用户吗","提示",MessageBoxButtons.OKCancel) == DialogResult.OK) { string strSql = "delete MyUser where UserGUID = @UserGUID"; int ret = SqlHelper.ExecuteCommand(strSql,new System.Data.SqlClient.SqlParameter("@UserGUID", UserGUID)); if (ret > 0) { MessageBox.Show("删除成功"); DataTable dt = SqlHelper.GetDataSet($"select UserGUID,UserCode,UserName from MyUser where UserCode like '%{this.txtCondition.Text}%' or UserName like '%{this.txtCondition.Text}%' "); this.dataGridView1.DataSource = dt; } else { MessageBox.Show("删除失败"); }
这段代码是一个 Windows 窗体应用程序的部分类 SelectUser。代码中有一个加载事件 SelectUser_Load,该事件在窗体加载时执行。在该事件中,使用 SqlHelper 类从数据库中查询数据,并将结果绑定到 dataGridView1 控件的 DataSource 属性上。
代码还包含了 btnSelect_Click 事件,该事件在点击按钮 btnSelect 时执行。在该事件中,根据用户输入的条件使用 SqlHelper 类执行带有 LIKE 子句的查询,并将结果绑定到 dataGridView1 控件的 DataSource 属性上。
另外还有一个 button2_Click 事件,该事件在点击按钮 button2 时执行。在该事件中,首先判断是否选中了行,如果没有选中任何行则弹出消息框并返回。然后,获取选中行的 UserGUID 值,并与 MyUser 类中的 UserGUID 值进行比较。如果相等,则弹出消息框并返回。如果不相等,则执行删除操作。删除操作是通过执行 SQL DELETE 语句,使用 SqlHelper 类的 ExecuteCommand 方法传递参数来实现的。最后,根据删除结果显示相应的消息框,并重新查询数据并绑定到 dataGridView1 控件上。
需要注意的是,这段代码没有完整的异常处理和参数验证,请根据实际情况进行补充。
阅读全文