在组合框选择事件的顶部显示新条目,并用线条分隔每个新条目

时间:2016-05-26 07:42:43

标签: c# .net winforms

我有1个组合框控制,我有很多国家。

现在,在这个comboxbox选择中,我希望显示如下内容:

Desired Output

注意:最新选择应该始终位于顶部。

每次选择任何国家/地区时,我都希望在此控件中创建条目,此条目应位于顶部。

我是第一次在winform工作,所以我不知道应该用什么控件来达到同样的效果。

我不确定使用哪种控件,所以我现在使用textbox控件。

这就是我所做的:

private void CountriesForm_Load(object sender, EventArgs e)
        {
            string[] Countries = Countries.GetallCountries();
            foreach (var item in Countries 
            {
                cmbCountries.Items.Add(item.ToString());
            }
            cmbCountries.SelectedIndex = 0;
        }

private void cmbCountries_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(cmbCountries.SelectedIndex > 0)
            {
                if(txtCountries.Text.Count() > 0)
                {
                    txtCountries.Text.Text = "_____________________________________" + txtCountries.Text + cmbCountries.SelectedIndex.ToString();
                }
                else
                {
                    txtCountries.Text = cmbCountries.SelectedItem.ToString();
                }
            }
        }

1 个答案:

答案 0 :(得分:1)

我建议使用ListBox,你只需要传递你想要显示的项目,在这种情况下是字符串。 ListBox不会在项目之间添加一行,但您仍然可以将它们区分开来。

因此,一旦将列表框添加到表单中,就让它称为lbSelec。你只需要:

private void cmbCountries_SelectedIndexChanged(object sender, EventArgs e)
{
    String toAdd= "Country Selected :";
    toAdd+=cmbCountries.Text;
    toAdd+="      " //You can make it to more or less " " depending on the length of the country name
    toAdd+="DateTime: " + DateTime.Now.ToString();

    lbSelect.items.Insert(0,toAdd);
}