单击背景中的表单时,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才会消失。
谁能帮我?
如果单击Form
, ToolStripButton
, PictureBox
或任何其他不可选控件,则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; }