簡體   English   中英

為什么KeyDown事件不能與datagridview c#一起使用?

[英]Why KeyDown event is not working with datagridview c#?

我是C#和使用Windows窗體的新手。

當我按下鍵盤上的向下箭頭鍵並找到keyDown datagridview事件時,我正在尋找一個與datagridview一起使用的事件。

我正在嘗試做的是:

假設我有4 rows datagridview ,現在當我按下箭頭(在鍵盤上)時,我希望突出顯示(選擇)下降,並且在選擇行的同時,我希望事件檢查行字體顏色是否為是否為紅色,所以我使用以下代碼:

 private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
 {

        int RowIndex = dataGridView1.SelectedRows[0].Index;


        if (dataGridView1.Rows[RowIndex].DefaultCellStyle.ForeColor == Color.Red)
        {
            MessageBox.Show("This row font is red");
        }               


 }

當我嘗試此代碼時,它不能很好地工作,問題是:

說:

Row0 font color = black

Row1 font color = red

Row2 font color = black

Row3 font color = black

現在選定的行是Row0 ,向下按箭頭將轉到Row1但不會觸發該事件。 現在選定的行是Row1 ,當我按下箭頭向下時,該事件有效,但為時已晚,我的意思是當選擇Row1時應將其觸發。

有誰知道我該如何解決(或其他任何想法)? 我只想在按下鍵盤上的箭頭鍵時檢查行字體的顏色? 謝謝

實際更改選擇之前會觸發KeyDown事件。

關鍵事件按以下順序發生:

 KeyDown KeyPress KeyUp 

因此,一個簡單的解決方案是將代碼移至KeyUp事件,該事件選擇新行之后發生。

為此,您可以使用SelectionChanged事件首先通過以下行設置行選擇模式

dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

這是選擇更改事件機制

private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
        if (dataGridView1.SelectedRows.Count > 0)
        {
            int RowIndex = dataGridView1.SelectedRows[0].Index;
            if (dataGridView1.Rows[RowIndex].DefaultCellStyle.ForeColor == Color.Black)
            {
                MessageBox.Show("This row font is Black");
            }      
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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