在DataGridView背景(在任何单元格外部)C#中单击时的Click事件

问题描述 投票:0回答:1

每次单击DataGridView时,但在背景区域中,而不是在单元格,行或列中,我都需要关注文本字段。

你们能帮我个忙吗?我尚未找到该事件的调用方式,我正在使用Visual Studio

非常感谢!

c# datagridview background click
1个回答
0
投票

这里是一个代码示例,用于在单击背景时突出显示文本框并回答您的问题:

使用'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:

Show click on Background

只需查看代码示例中显示的

Type

字段,它将告诉您鼠标单击的区域类型。如果Type为'None',请像这样关注您的textBox1,因为这样可以安全地在UI线程上这样做:if(hitTest.Type == DataGridViewHitTestType.None) { BeginInvoke((MethodInvoker)delegate { textBox1.Focus(); }); }
希望看到此代码示例会有所帮助!    
© www.soinside.com 2019 - 2024. All rights reserved.