2015-06-04 49 views
0

我正在調度程序,並在dataGridView中,我們有幾個ComboBox列在創建時由3個條目填充,但我希望能夠添加更多,因爲用戶創建它們,但我沒有想法你將如何訪問組合框數據。任何幫助表示讚賞!在dataGridView列中訪問組合框?

// 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

我很困惑。它不是**用戶**,它創建條目。這是**您的應用程序**,代表用戶。我不知道,你如何實現這個功能,現在請求幫助實現相同的功能。我錯過了什麼? – IInspectable

+0

列中有下拉組合框,當用戶選擇「添加新」時,它們會顯示一個請求新輸入的文本框。然而,當它輸入時,我不知道如何將它添加到組合框中以供將來選擇。 – Ralis

+0

顯示如何在開始的'ComboBoxColumn'中添加項目 – Fabio

回答

1

解決方案

如果你有機會從用戶輸入的數據,你知道的DataGridViewComboBoxColumn列索引,你應該能夠做到以下幾點哪裏需要只是:

DataGridViewComboBoxColumn^ comboboxColumn = dataGridView->Columns[the_combobox_column_index]; 

if (comboboxColumn != nullptr) 
{ 
    comboboxColumn->Items->Add("the new user entry"); 
} 

意見的迴應

如何更改該組合框的選定索引( 編輯觸發的那個)? [...]我們希望它能夠在添加新項目 時將所選索引設置爲該新項目)。

幾個想到的方法。

  1. 在上述代碼的if-statement中添加一行。這將爲DataGridViewComboBoxColumn中的每個DataGridViewComboBoxCell設置默認顯示值。

    if (comboboxColumn != nullptr) 
    { 
        comboboxColumn->Items->Add("the new user entry"); 
        comboboxColumn->DefaultCellStyle->NullValue = "the new user entry"; 
    } 
    
    • 優點:清潔,高效。以前用戶選擇的值爲,保持不變。如果沒有其他選擇,單元格的FormattedValue將默認顯示新的用戶值。
    • 缺點:實際上設置了單元格的選定值,所以Value將在未明確用戶選擇的單元格上返回null
  2. 實際上設置某些細胞對用戶添加的值的值(根據您的標準)。

    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實際上設置爲新的用戶價值。
    • 缺點:邏輯決定哪個細胞應該受到影響更爲複雜。
+0

首先感謝您的回答。現在,考慮到'comboboxColumn',你怎麼能改變該組合框的選定索引(編輯觸發的那個)呢? (我知道這不是問題的一部分,但我正在與Ralis一起開展項目,我們希望它能夠在添加新項目時將所選索引設置爲新項目) – StephenButtolph

+0

@StephenB編輯我的答案解決您的其他問題。希望有所幫助。如果我誤解了任何內容,請告訴我。 – OhBeWise

+0

非常感謝您,我認爲這正是我們所需要的。當我週一看到他時,我會確保拉利斯接受這個答案。再次感謝! – StephenButtolph