单击背景中的表单时,Datagridview将消失

如标题中所述,我在前面有一个带有Datagridview的表单。 datagridview比后面的我的表单小,我希望每当我点击Datagridview以外的任何地方时,Datagridview都会消失。

我的代码如下所示:

this.dataGridView1.Leave += new System.EventHandler(this.focus); 

并且Eventhandler的定义如下:

 private void focus(object sender, EventArgs e) { if(dataGridView1.Focused == false) { dataGridView1.Visible = false; } } 

我的问题是,当我的表单中的新事件被激活时,我的Datagridview才会消失,但是当我在表单上的文本框中单击时,我的Datagridview才会消失。

谁能帮我?

如果单击FormToolStripButtonPictureBox或任何其他不可选控件,则Leave事件不会引发。

如果您期望像下拉列表这样的行为,则可以在ToolStripControl主机中托管DataGridView并使用ToolStripDropDown显示它。 这样当你点击`DataGridView外的任何地方时,它就会消失。 它将像下拉菜单一样。 网格也可能比您的表格更大:

 private void button1_Click(object sender, EventArgs e) { this.dataGridView1.Margin = new Padding(0); var host = new ToolStripControlHost(this.dataGridView1); this.dataGridView1.MinimumSize = new Size(200, 100); host.Padding = new Padding(0); var dropdown = new ToolStripDropDown(); dropdown.Padding = new Padding(0); dropdown.Items.Add(host); dropdown.Show(button1, 0,button1.Height); } 

在此处输入图像描述

重要说明:这是一个例子。 最好注意在现实世界的应用程序中处理对象。 例如,只使用一个ToolStripdropDown并在关闭表单时将其处理ToolStripdropDown

更改分配给的事件处理程序:

 this.dataGridView1.Leave += new System.EventHandler(fokussiert); 

专注于文本框时为我工作

你希望你的dgv在点击你的文本框时也会消失吗? 你是这个意思吗?

  private void dataGridView1_Leave(object sender, EventArgs e) { dataGridView1.Visible = false; } private void Form1_Click(object sender, EventArgs e) { dataGridView1.Visible = false; }