每次单击DataGridView时,但在背景区域中,而不是在单元格,行或列中,我都需要关注文本字段。
你们能帮我个忙吗?我尚未找到该事件的调用方式,我正在使用Visual Studio
非常感谢!
这里是一个代码示例,用于在单击背景时突出显示文本框并回答您的问题:
使用'Click'事件的问题是,它不会告诉您鼠标在哪里。您可以使用“ MouseClick”事件来解决。这是接收事件通知的一种方法:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.MouseClick += DataGridView1_MouseClick;
}
}
然后,当发生鼠标单击时,您可以使用您的[[dataGridView1控件(或其名称),并获得一个命中测试,该测试可为您提供有关单击了哪些行和列的信息:
private void DataGridView1_MouseClick(object sender, MouseEventArgs e)
{
DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(e.X, e.Y);
string message =
"Mouse click on " + hitTest.Type.ToString() + Environment.NewLine +
"Row: " + hitTest.RowIndex.ToString() + Environment.NewLine +
"Column: " + hitTest.RowIndex.ToString();
MessageBox.Show(message);
}
您的问题是“我怎么知道这是背景区域?”在这种情况下,您将看到“无”作为“类型”,并且行和列的索引都将为-1:字段,它将告诉您鼠标单击的区域类型。如果Type为'None',请像这样关注您的textBox1,因为这样可以安全地在UI线程上这样做:只需查看代码示例中显示的
Type
if(hitTest.Type == DataGridViewHitTestType.None)
{
BeginInvoke((MethodInvoker)delegate
{
textBox1.Focus();
});
}
希望看到此代码示例会有所帮助!