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