通过属性winform设置组合框值

时间:2017-08-14 18:44:50

标签: c# .net winforms

我需要从另一个类设置我的Combobox,所以我试图在我的公共属性中设置值。这是我到目前为止,但组合框没有填充。

public string Title
{
    set 
    { 
        _Title = value;
        cmb_Title.Text = value;
    }
    get 
    { 
        return _Title; 
    }
}

我也尝试了cmb_Title.selectedText = value,索引以及我能想到的一切,但我不确定是否因为我在我的财产中设置它。 任何想法将不胜感激。

3 个答案:

答案 0 :(得分:0)

您想要将项目添加到组合框中,如下所示:

public string Title
{
    set 
    {  
        _Title = value;
        cmb_Title.Items.Add(_Title);
    }
    get 
    { 
        return _Title; 
    }
}

如果您也想要选择新添加的项目,也可以这样做。我建议使用新功能。

private static void AddItemsToComboBox(ComboBox cmb, string value)
{
    cmb.Items.Add(value);
    cmb.SelectedValue = value;
}

然后在你的二传手中调用它:

AddItemsToComboBox(cmb, _Title);

答案 1 :(得分:0)

请注意,我将form1作为所有者传递,因此form2可以访问属性Title。此外,这只是一个例子。如果一个集合在表单中应该是相同的,那么在现实生活中,我将绑定到DAL或业务层中可以共享它们的集合,而不是像这样添加项目。

public partial class Form1 : Form
{
    private string _Title = "";

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        cmb_Title.Items.Add("Cat");
        cmb_Title.Items.Add("Dog");
        cmb_Title.Items.Add("Bear");
    }

    public string Title
    {
        set
        {
            _Title = value;
            cmb_Title.SelectedIndex = cmb_Title.FindStringExact(value);
        }
        get
        {
            return _Title;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        var form2 = new Form2();
        form2.Show(this);
    }
}



public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        cmb_Title2.Items.Add("Cat");
        cmb_Title2.Items.Add("Dog");
        cmb_Title2.Items.Add("Bear");

    }

    private void cmb_Title_SelectedIndexChanged(object sender, EventArgs e)
    {
        var f1 = this.Owner as Form1;
        f1.Title = cmb_Title2.Text;
    }
}

答案 2 :(得分:0)

Combox1.SelectedIndex = Combox1.FindStringExact(" test1"); 它在困扰着我