Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在DataGridView后台(任何单元格外部)中单击时单击事件C#_C#_Datagridview_Background_Click - Fatal编程技术网

在DataGridView后台(任何单元格外部)中单击时单击事件C#

在DataGridView后台(任何单元格外部)中单击时单击事件C#,c#,datagridview,background,click,C#,Datagridview,Background,Click,每次单击DataGridView时,我都需要聚焦文本字段,但不在单元格、行或列的背景区域中 你们能帮我一下吗。我还没有找到如何调用此事件,我正在使用visual studio 非常感谢 以下是一个代码示例,用于在单击背景时聚焦文本框并回答您的问题: 使用“单击”事件的问题在于它不会告诉您鼠标在哪里。您可以通过使用“MouseClick”事件来解决此问题。以下是接收该事件通知的一种方法: public partial class Form1 : Form { public Form1()

每次单击DataGridView时,我都需要聚焦文本字段,但不在单元格、行或列的背景区域中

你们能帮我一下吗。我还没有找到如何调用此事件,我正在使用visual studio


非常感谢

以下是一个代码示例,用于在单击背景时聚焦文本框并回答您的问题:

使用“单击”事件的问题在于它不会告诉您鼠标在哪里。您可以通过使用“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”,请将文本框1的焦点设置为这样,因为在UI线程上这样做是安全的:

if(hitTest.Type == DataGridViewHitTestType.None)
{
    BeginInvoke((MethodInvoker)delegate
    {
        textBox1.Focus();
    });
}

希望看到这个代码示例是有帮助的

使用MouseDown和Hittest!您使用的是WPF还是WinForms?WinForms应用程序