2009-04-30 2 views
0

У меня есть DataGridView в модальном окне со списком параметров для моей программы. Сетка состоит из двух столбцов. Первый содержит флажок для выбора этой опции, seccond - это имя/описание этого параметра. В winform также содержатся кнопки «ОК» и «Отмена», но это не относится к делу. Следующий код делает то, что я хочу. Из-за свойства FullRowSelect флажок установлен/не установлен, вы щелкаете в любом месте с этой строкой. Однако он не показывает синий фон или пунктирную линию вокруг текущей строки. Как я могу добавить это, не потеряв ни одну из существующих функций?DataGridView: FullRowSelect и Focus

EDIT: Подробное описание; я хочу снова включить пунктирную линию и/или синий фон в выбранной строке/ячейках. Похоже, что код я в данный момент каким-то образом отключает этот ...

Соответствующий текущий код:

public OptionsForm() 
{ 
    InitializeComponent(); 
    OptionsRoot = Options.GetReadOnlyRoot(OptionsBannersNameValueList.GetNameValueList(Settings.Default.OptionsBanners)); 
    optionsBannersDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
    optionsBannersDataGridView.MultiSelect = false; 
    optionsBannersDataGridView.RowPrePaint += new DataGridViewRowPrePaintEventHandler(optionsBannersDataGridView_RowPrePaint); 
    InitUI(); 
    Closing += MyFormClosing; 
    BindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource); 
} 

private void optionsBannersDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) 
{ 
    e.PaintParts &= ~DataGridViewPaintParts.Focus; 
} 

ответ

0

То, что я, наконец, ней- до поступаю удалить большую часть кода, упомянутого выше, так как он на самом деле не делать. по какой-то причине, когда я устанавливал свойства в visual studio, это не сработало, но теперь это происходит. Я не знаю, что там произошло, но это не относится к делу.

Конструктор теперь выглядит следующим образом:

public OptionsForm() 
    { 
     InitializeComponent(); 
     AlternativerRoot = Alternativer.GetReadOnlyRoot(AlternativerFanerNameValueList.GetNameValueList(Settings.Default.AlternativerFaner)); 
     InitUI(); 
     Closing += MyFormClosing; 
     _bindingSourceTree = BindingSourceHelper.InitializeBindingSourceTree(components, rootBindingSource); 
    } 

Свойства устанавливаются в Visual Studio GUI вместо этого. Для параметра SelectionMode установлено значение FullRowSelect, а для параметра MultiSelect установлено значение false.

Я все еще не получал фокус, который я хотел, поэтому я устанавливаю обратную линию выделенной строки на синюю, а переднюю - на визуальную студию. Теперь это работает так, как я этого хотел.

Я до сих пор не знаю, почему свойства не были установлены должным образом получать раньше, но, по крайней мере, в настоящее время работает: P

2

Я хотел бы попробовать использовать метод .OnCellClick и установите цвет строки в синий цвет. Я думаю, вы также сможете добавить пунктирную границу.

Я полагаю, вы можете назвать это так:

optionsBannersDataGridView.OnCellClick += new DataGridViewCellEventArgs(optionsBannersDataGridView_OnCellClick); 
+0

ли это гарантировать, что верхняя строка синего цвета во время загрузки, хотя? – Sakkle

+0

Я не только хочу, чтобы это произошло onCellClick. Текущая строка, которая должна быть очерчена/окрашена в любое время. Это то, что я пытаюсь сделать ... – Sakkle

+0

Я прав, думая, что вы хотите, чтобы каждая строка была отмечена голубым фоном? –

Смежные вопросы