コンボボックス型セル(ComboBoxCell)で選択されている値のインデックスを取得する方法

文書番号 : 40470     文書種別 : 使用方法     登録日 : 2017/07/26     最終更新日 : 2017/07/26
文書を印刷する
対象製品
MultiRow for Windows Forms 10.0J
詳細
ComboBoxCell.ValueAsIndexプロパティにTrueを設定することで、ComboBoxCellのValueプロパティで取得される値をアイテムのインデックス番号にすることができます。

または、ComboBox.Itemsプロパティのコレクションから、セルの値(Cell.Value)を検索することで、ComboBoxCellで選択されている値のインデックスを取得することができます。

[Visual Basic]
Imports GrapeCity.Win.MultiRow

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim comboBoxCell1 As New ComboBoxCell
    comboBoxCell1.Name = "comboBoxCell1"
    comboBoxCell1.Items.Add("東京")
    comboBoxCell1.Items.Add("名古屋")
    comboBoxCell1.Items.Add("大阪")

    GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {comboBoxCell1})
    GcMultiRow1.SetValue(0, "comboBoxCell1", "名古屋")
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim gcMultiRow As GcMultiRow = Me.GcMultiRow1
    If TypeOf gcMultiRow.CurrentCell Is ComboBoxCell Then
        Dim comboBoxCell As ComboBoxCell = TryCast(gcMultiRow.CurrentCell, ComboBoxCell)
        Dim selectedValue As Object = comboBoxCell.Value
        Dim selectedIndex As Integer = -1
        If selectedValue IsNot Nothing Then
            selectedIndex = comboBoxCell.Items.IndexOf(selectedValue)
        End If
        MessageBox.Show(String.Format("選択されているインデックス: {0}", selectedIndex))
    Else
        MessageBox.Show("現在のセルはComboBoxCellではありません")
    End If
End Sub

[C#]
using GrapeCity.Win.MultiRow;

private void Form1_Load(object sender, EventArgs e)
{
    ComboBoxCell comboBoxCell1 = new ComboBoxCell();
    comboBoxCell1.Name = "comboBoxCell1";
    comboBoxCell1.Items.Add("東京");
    comboBoxCell1.Items.Add("名古屋");
    comboBoxCell1.Items.Add("大阪");

    gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { comboBoxCell1 });
    gcMultiRow1.SetValue(0, "comboBoxCell1", "名古屋");
}

private void button1_Click(object sender, EventArgs e)
{
    GcMultiRow gcMultiRow = this.gcMultiRow1;

    if (gcMultiRow.CurrentCell is ComboBoxCell)
    {
        ComboBoxCell comboBoxCell = gcMultiRow.CurrentCell as ComboBoxCell;
        object selectedValue = comboBoxCell.Value;
        int selectedIndex = -1;
        if (selectedValue != null)
        {
            selectedIndex = comboBoxCell.Items.IndexOf(selectedValue);
        }
        MessageBox.Show(string.Format("選択されているインデックス: {0}", selectedIndex));
    }
    else
    {
        MessageBox.Show("現在のセルはComboBoxCellではありません");
    }
}