我正在开发一个调度程序,在dataGridView中,我们有一些ComboBox列在创建时由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...");
答案 0 :(得分:1)
<强>解决方案强>
如果您可以访问用户条目中的数据并且知道DataGridViewComboBoxColumn
的列索引,那么您应该可以在需要的地方执行以下操作:
DataGridViewComboBoxColumn^ comboboxColumn = dataGridView->Columns[the_combobox_column_index];
if (comboboxColumn != nullptr)
{
comboboxColumn->Items->Add("the new user entry");
}
评论回复
你怎么能改变那个组合框的选定索引(那个 编辑被触发了)? [...]我们想要它,以便在新项目时 添加所选索引设置为该新项目。
想到了几种方式。
在上述代码的if-statement
内添加一行。这将为DataGridViewComboBoxCell
中的每个DataGridViewComboBoxColumn
设置默认显示值。
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
实际设置为新用户值。