2

状況は、テキスト ボックスとコンボ ボックスの 2 つのコントロールがあることです。ユーザーはコンボ ボックスで何かを選択できます。テキスト ボックスに値のメンバーが入力されます。ユーザーがテキスト ボックスに入力すると、コンボ ボックスの値に存在するかどうかを確認し、対応する表示メンバーを選択します。

私が期待していた方法は次のようなものでした

if(cmb1.valueMembers.Contains(txt1.Text))

しかし、私はこのようなものを見つけることができません。また、それらをループして見つけることができると思いましたか? だから私は持っている

foreach (System.Data.DataRowView row in cmb1.Items)
        {}

しかし、行のどこにも値のメンバーが見つかりませんか?

ありがとう

4

4 に答える 4

3

わかりました、これは簡単な例ですが、それが主なアイデアだと思います。ValueMemberとDisplayMember の がありますMyClassIdName

 public partial class Form1 : Form
{
    class MyClass
    {
        public MyClass(string name, int id)
        {
            Name = name;
            Id = id;
        }
        public string Name { get; set; }
        public int Id { get; set; }
    }

    List<MyClass> dsList = new List<MyClass>();

    public Form1()
    {

        for (int i = 0; i < 10; i++)
        {
            dsList.Add(new MyClass("Name" + i , i));
        }

        InitializeComponent();

        comboBox1.DataSource = dsList;
        comboBox1.ValueMember = "Id";
        comboBox1.DisplayMember = "Name";
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        //Checks if item with the typed Id exists in the DataSource
        // and selects it if it's true
        int typedId = Convert.ToInt32(textBox1.Text);
        bool exist = dsList.Exists(obj => obj.Id == typedId);
        if (exist) comboBox1.SelectedValue = typedId;

    }


    private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
    {
        MyClass obj = comboBox1.SelectedValue as MyClass;
        if (obj != null) textBox1.Text = obj.Id.ToString();
    }
}

不明な点があればお気軽にお尋ねください。

PS: この例では、テキスト ボックスに整数が入力されると想定しています。

于 2012-12-07T12:38:24.427 に答える
-1
Private Sub ComboBox1_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedValueChanged
    If ComboBox1.SelectedIndex = -1 Then              
        Return
    Else
        TextBox1.Text = ComboBox1.SelectedValue.ToString   ' if find then show their displaymember in combobox.
    End If


Private Sub TextBox1_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
    Dim value As String = TextBox1.Text
    ComboBox1.SelectedValue = value                                    ' if find then show their displaymember in combobox.

    If ComboBox1.SelectedValue Is Nothing Then                          ' if the id you entered in textbox is not find.
        TextBox1.Text = String.Empty

    End If
于 2013-05-22T02:21:19.433 に答える