我是c#的新手并使用Windows窗体。
当按下键盘上的向下箭头键时,我正在寻找与datagridview
一起使用的事件,我找到了keyDown datagridview
事件。
我想做的是:
假设我datagridview
有4 rows
,现在当我向下按箭头(在键盘中)时,我希望突出显示(选择)下降,同时选择一行时我希望事件检查行字体颜色是否为红色,因此我使用了以下代码:
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
时它会被触发。
任何人都知道如何解决它(或任何其他想法)?我只想在键盘上按下箭头键时检查行字体颜色?谢谢
答案 0 :(得分:1)
{/ 3}}事件在选择实际发生变化之前触发。
关键事件按以下顺序发生:
KeyDown KeyPress KeyUp
因此,一个简单的解决方案是将您的代码移至KeyUp
事件,在新行选择发生后发生。
答案 1 :(得分:1)
要实现此目的,您可以使用 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");
}
}
}