关闭使用eventandler生成的win form代码
本文关键字:win form 代码 eventandler | 更新日期: 2023-09-27 18:19:21
如何在双击列表框项时关闭代码生成的表单。
我的代码
private void btn_batchList_Click(object sender, EventArgs e)
{
string[] batchList = BACH_Outward.GetOutBatchList(txtBranchId.Text, dtpHouseDt.Value.ToString("dd/MM/yyyy"), cmbCLRTYPE.SelectedValue.ToString(), "T");
if (batchList == null)
{
return;
}
Form form = new Form();
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.MaximizeBox = false;
form.MinimizeBox = false;
form.Size = new Size(150, 325);
form.StartPosition = FormStartPosition.Manual;
form.Location = new Point(this.Right - 200, this.Top + 100);
form.Opacity = 50;
form.Text = "Batch List";
form.Move += new System.EventHandler(this.OnMove);
ListBox BatchList = new ListBox();
BatchList.Size = new System.Drawing.Size(140, 315);
form.Controls.Add(BatchList);
BatchList.DataSource = batchList;
BatchList.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listBox_MouseDoubleClick);
form.ShowDialog();
}
private void listBox_MouseDoubleClick(object sender, MouseEventArgs e)
{
ListBox listBox = (ListBox)sender;
if (listBox.SelectedIndex != -1)
{
var rect = listBox.GetItemRectangle(listBox.SelectedIndex);
if (rect.Contains(e.Location))
{
// process item data here
TxtBatchNo.Text = listBox.SelectedValue.ToString();
//want to close the popup form here.
}
}
}
现在我想关闭弹出表单时,用户双击一个项目的列表框。
必须在两个方法都可以访问的范围内声明form
对象。然后调用form.Close()
方法,或者如果以后需要显示它,则将可见性更改为hidden。
您可以通过获取对Form
对象的引用并在其上调用Close()
来关闭窗口:
((Form)listBox.TopLevelControl).Close();
然而,我强烈建议在你的项目中创建一个新的表单,这样它就是它自己的类,并封装了它自己的所有逻辑。似乎您正在直接从另一个表单中创建Form
对象,并将两个表单的逻辑混合在一起。
这就是闭包可以发挥作用的地方。只需关闭表单。
BatchList.MouseDoubleClick += (sender, args) => {
if (someCondition) {
form.Close();
}
}