4

C# でしばらくプログラミングを行った後、comboBox に等しい項目がある場合、正しい selectedIndex を取得できないことがわかりました。次のアイテムを含む ComboBox があるとします。

ここに画像の説明を入力

ComboBox で 3 番目のアイテムを選択すると 2 を受け取りたいのですが、常に 0 を受け取ります。また、ComboBox で 5 番目のアイテムを選択すると 4 を受け取りたいのですが、常に 3 を受け取ります。

SelectedIndexComboBox常に ComboBox の最初の要素を返すと思います。

等しい項目を持つコンボボックスから選択された項目インデックスを取得するにはどうすればよいですか?

4

4 に答える 4

2

リスト文字列にバインドしていると思われます。
String は参照型ですが、= をオーバーライドし、最初に一致する値を見つけます。
単一の文字列プロパティを持つ単純なクラスを作成します。

public class SimpleString
{
    public string StrValue { get; set; }
    public SimpleString() { }
    public SimpleString(string strValue) { StrValue = StrValue;  }
}
于 2013-03-11T16:26:05.873 に答える
1

MainWindow.xaml.cs:

public partial class MainWindow : Window
{
    private List<String> list = new List<string>();

    public List<String> List { get { return this.list; } set { this.list = value; } }

    public MainWindow()
    {
        InitializeComponent();

        list.Add("methode");
        list.Add("methode");
        list.Add("methode");
        list.Add("methode2");
        list.Add("methode2");

        this.DataContext = this;
    }

    private void comboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        MessageBox.Show(comboBox1.SelectedIndex.ToString());
    }
}

MainWindow.xaml:

<Window x:Class="Temp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox1"
                  VerticalAlignment="Top" Width="120"
                  SelectionChanged="comboBox1_SelectionChanged"
                  ItemsSource="{Binding List}" />
    </Grid>
</Window>

私にとってはうまくいきます。質問を詳しく説明していただけますか?私はさまざまな種類のタイプをすべて試しましたが、これまでのところ常に機能する結果が得られました。

于 2013-03-11T16:38:48.490 に答える
0

Name プロパティと Id プロパティを含むチェックボックス モデル クラスを作成できます。次に、comboBox のプロパティDisplayMemberDataMemberそのプロパティを初期化します。DataSource次に、comboBox のプロパティをカスタム アイテムのリストに割り当てます。

DataSource の要素は (参照によって) 等しくないため、等しいとは見なされず、SelectedValue. SelectedIndexおそらく同様に機能しますが、この場合、それは最善のアプローチではありません。

于 2013-03-11T16:18:10.490 に答える
0

とにかくSelectedValue代わりにSelectedIndex.

絶対にインデックスが必要な場合は、コンボボックスのアイテムをループできます...

于 2013-03-11T16:18:37.603 に答える