我正在做一个调度程序,在dataGridView中,我们有几个组合框列,在创建时由3个条目填充,但我希望能够添加更多的用户创建它们,但我不知道你将如何访问组合框数据。任何帮助都是感激的!
// this is initialized in a separate part.
/* System::Windows::Forms::DataGridView^ dataGridView;*/
System::Windows::Forms::DataGridViewComboBoxColumn^ newCol =
(gcnew System::Windows::Forms::DataGridViewComboBoxColumn());
dataGridView->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewComboBoxColumn^ >(1) {newCol});
// add the choices to the boxes.
newCol->Items->AddRange("User inputted stuff", "More stuff", "Add New...");
解决方案
如果您可以访问来自用户条目的数据,并且您知道DataGridViewComboBoxColumn
的列索引,那么您应该能够在需要的任何地方执行以下操作:
DataGridViewComboBoxColumn^ comboboxColumn = dataGridView->Columns[the_combobox_column_index];
if (comboboxColumn != nullptr)
{
comboboxColumn->Items->Add("the new user entry");
}
<
评论反应/strong>
如何更改组合框的选定索引编辑是在什么时候触发的?[…我们想要它,以便当新的项目
我想到了几个方法。
在上述代码的
if-statement
中添加一行。这将为DataGridViewComboBoxColumn
中的每个DataGridViewComboBoxCell
设置默认显示值。if (comboboxColumn != nullptr) { comboboxColumn->Items->Add("the new user entry"); comboboxColumn->DefaultCellStyle->NullValue = "the new user entry"; }
- 优点:干净,高效。先前用户选择的值保持不变。如果没有其他选择,单元格的
FormattedValue
将默认显示新的用户值。- 缺点:实际上没有设置单元格的选定值,因此
Value
将在未明确用户选择的单元格上返回null
。 实际上设置某些单元格的值(基于您的标准)为用户附加值。
if (comboboxColumn != nullptr) { comboboxColumn->Items->Add("the new user entry"); for (int i = 0; i < dataGridView->Rows->Count; i++) { DataGridViewComboBoxCell^ cell = dataGridView->Rows[i]->Cells[the_combobox_column_index]; if ( cell != nullptr /* and your conditions are met */ ) { cell->Value = "the new user entry"; } } }
- 优点:目标单元格的
Value
实际上是 设置为新的用户值- 缺点:逻辑决定哪些细胞应该受到影响比较复杂。