DataGridview(Winform)のセルにコンボボックスを追加する方法は見つけたのですが、DataGridViewのItemDataBoundのようなコンボボックスに値を設定するイベントが見つかりませんでした。そして、コンボボックスの選択された値を(DataGridViewの)現在の行のDataItemプロパティに設定する方法がわかりません:(
このタスクを実行するための手がかりを教えてください
本当にありがとうございます
DataGridview(Winform)のセルにコンボボックスを追加する方法は見つけたのですが、DataGridViewのItemDataBoundのようなコンボボックスに値を設定するイベントが見つかりませんでした。そして、コンボボックスの選択された値を(DataGridViewの)現在の行のDataItemプロパティに設定する方法がわかりません:(
このタスクを実行するための手がかりを教えてください
本当にありがとうございます
以下のメソッドを使用して、グリッドビューのコンボボックスにデータを追加できます。リストがない場合は、次のようにコンボボックスにアイテムを追加できます。
cmbdgv.Items.Add("Test");
private void bindDataToDataGridViewCombo() {
DataGridViewComboBoxColumn cmbdgv = new DataGridViewComboBoxColumn();
List<String> itemCodeList = new List<String>();
cmbdgv.DataSource = itemCodeList;
cmbdgv.HeaderText = "Test";
cmbdgv.Name = "Test";
cmbdgv.Width = 270;
cmbdgv.Columns.Add(dgvCmbForums);
cmbdgv.Columns["Test"].DisplayIndex = 0;
}
コンボボックスの選択の変更をキャプチャする場合は、追加した後、datagridview で以下のイベントを使用できます。
ComboBox cbm;
DataGridViewCell currentCell;
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox)
{
cbm = (ComboBox)e.Control;
if (cbm != null)
{
cbm.SelectedIndexChanged += new EventHandler(cbm_SelectedIndexChanged);
}
currentCell = this.dataGridView1.CurrentCell;
}
}
void cbm_SelectedIndexChanged(object sender, EventArgs e)
{
this.BeginInvoke(new MethodInvoker(EndEdit));
}
void EndEdit()
{
if (cbm != null)
{
string SelectedItem=cbm.SelectedItem.ToString();
int i = dataGridView1.CurrentRow.Index;
dataGridView1.Rows[i].Cells["Test"].Value = SelectedItem;
}
}
DataGridView の Combobox に値を設定しようとしている場合は、この回答が役立つかどうかを確認してください。
コンボボックスの選択された項目を取得するには (例):
comboBox.SelectedIndexChanged += new EventHandler(comboBox_ComboSelectionChanged);
private void comboBox_ComboSelectionChanged(object sender, EventArgs e)
{
if (myDGV.CurrentCell.ColumnIndex == 5)
{
int selectedIndex;
string selectedItem;
selectedIndex = ((ComboBox)sender).SelectedIndex; // handle an error here.
// get the selected item from the combobox
var combo = sender as ComboBox;
if (selectedIndex == -1)
{
MessageBox.Show("No value has been selected");
}
else
{
// note that SelectedItem may be null
selectedItem = combo.SelectedItem.ToString();
if (selectedItem != null)
{
// Your code