簡體   English   中英

單擊 DataGridView 背景時的單擊事件(在任何單元格外)C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM