Цвет элемента управления Datagridview изменяется только после запуска обработчика события и щелчка по другой ячейке. - PullRequest
0 голосов
/ 06 января 2012

Я хочу изменить цвет ячейки в сетке данных при двойном щелчке по ячейке.Я добавил обработчик CellDoubleClick, который корректно срабатывает после двойного щелчка на ячейке:

Private Sub myDataGridView_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles myDataGridView.CellDoubleClick
    myDataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.ForeColor = Color.Red
    myDataGridView.Refresh()  'I added this to try to fix the problem
    Application.DoEvents()    'I added this to try to fix the problem
end sub

Но после «срабатывания» события пользовательский интерфейс не меняет цвет текста ячейки сразу.Вместо этого, если я щелкну один раз по другой ячейке , Visual Studio 2010 изменит ячейку original на красный (как говорит обработчик).

Кажется, что происходит какое-то обновление или перерисовка пользовательского интерфейса каждый раз, когда я нажимаю на другую ячейку.Это правильно?Есть ли способ обновить интерфейс программно.Многие сообщения от stackoverflow советуют .refresh, но это не работает.

1 Ответ

4 голосов
/ 06 января 2012

Это связано с тем, что при двойном щелчке по ячейке она остается выделенной и используются свойства .SelectionForeColor и .SelectionBackColor.Только когда вы щелкаете по другой ячейке, она отменяется и начинает использовать .ForeColor и .BackColor.Вы можете обновить его немедленно, либо изменив свойство .SelectionForeColor, либо установив .Selected = False сразу после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...