0

winformsプロジェクトでコンボボックスを使用しようとしています。

これが私のコードです:

        private void ShowContoursForm_Load(object sender, EventArgs e)
        {
           cbxSelectShape.DisplayMember = dataSetObject.ObjectShapes.ShapeNameColumn.ColumnName;
           cbxSelectShape.ValueMember = dataSetObject.ObjectShapes.ShapeIDColumn.ColumnName;
           cbxSelectShape.DataSource = dataSetObject.ObjectShapes;
        }


        private void cbxSelectShape_SelectedValueChanged(object sender, EventArgs e)
        {
           var id= (int)cbxSelectShape.SelectValue;
        }

ComboBoxからアイテムを選択すると、 SelectedValueChangedが起動され、id変数がnullになります。

選択したアイテムの値を取得する必要がありますが、id変数で常にnullを取得します。なぜ間違った結果が得られるのか、そしてこのコードを修正する方法はありますか?

4

2 に答える 2

2

この方法で ComboBox のインデックスを取得できます。

private void cbxSelectShape_SelectedValueChanged(object sender, EventArgs e)
    {
       var id= ((ComboBox)sender).SelectedIndex;
    }
于 2013-01-24T13:55:38.960 に答える
1

ValueMember (この場合はShapeID )に関連付けられた値を取得するには、コンボボックスのSelectedValueプロパティを使用する必要があります。

var id = ((ComboBox)sender).SelectedValue;

SelectedIndexは、コンボボックスで選択された項目のインデックスを返します。また、このハンドラーが 1 つのコンボボックスに使用される場合、sender をキャストする必要はありません。コンボボックス変数を使用するだけです。

var id = cbxSelectShape.SelectedValue;
于 2013-01-24T14:16:28.320 に答える