2

ComboBox にいくつかの項目があります。各アイテムには ID と名前があります。

     ______________
    │_____________▼│
    │111  Simon    │              
    │222  Patrick  │              
    │3333 John     │
    │155555 Ted    │
    └──────────────┘

選択したアイテムの ID をストアド プロシージャに渡す必要があります。ParseId のみを取得するには、アイテムの一部が必要です。私の問題は、ID の長さがわからない場合にどうすればよいかということです。(1 ~ 100 文字にすることができます)。

4

4 に答える 4

3

スペース文字で分割して、最初の結果を取得できます。

var id = comboBox.SelectedText.Split(' ')[0]; // Using array index
var id = comboBox.SelectedText.Split(' ').First(); // Using LINQ

余談として:

于 2012-07-16T15:03:51.947 に答える
3

次のように、アイテムをコンボボックスに入力する必要があります。

comboboxName.DataSource = ds;
comboboxName.ValueMember = "Id";
comboboxName.DisplayMember = "Name";

それ以外の場合は、これらの値を取得するために使用comboboxName.SelectedText.Split(' ');します。

于 2012-07-16T15:03:52.690 に答える
1

これを試して:

var foo = str.Split(' ');  //from 111  Simon will get '111'
var id = foo.Length > 1 ? foo[0] : null; 
if(id != null) {
  //do something with '111';
} else {
   //error
}

編集

カスタムComboboxクラスを使用して行うことをお勧めします。

public class Foo
{
    public string Text { get; set; }
    public int Value { get; set; }

    public Foo(int id, string name)
    {
        Value = id;
        Text = name;
    }

    public override string ToString()
    {
        return Text;
    }
}

そして、object(foo)をに追加しcomboboxます:

comboBox1.Items.Add(new Foo(111, "simon"));

SelectedItem次に、プロパティをクラスにキャストすることで値にアクセスできます。

//assuming that comboBox1.SelectedText is "simon", the following is true:
var val = (Foo)comboBox1.SelectedItem;
val.Value // 111
val.Text // simon
于 2012-07-16T15:04:07.120 に答える
0

選択した応答で String.Split を試してください。これにより、選択したアイテムのテキストがスペースで分割されます。最初のメンバーが上記の ID である 2 要素の配列を取得する必要があります。

ただし、より広義には、ソリューションを変更して、値を .ValueMember プロパティに配置し、名前を .DisplayMember プロパティに配置することを検討してください (何も解析する必要がなくなります)。リストボックスの実装がそれをサポートしていないかどうかを確認してください。

幸運を!

于 2012-07-16T15:04:49.357 に答える