[英]Click event when clicking in the DataGridView Background (outside any cell) C#
每次單擊 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字段,它就會告訴您鼠標單擊了哪種區域。 如果Type為“None”,則像這樣關注您的 textBox1,因為在 UI 線程上這樣做是安全的:
if(hitTest.Type == DataGridViewHitTestType.None)
{
BeginInvoke((MethodInvoker)delegate
{
textBox1.Focus();
});
}
希望看到這個代碼示例會有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.