C#组合框未从列表正确填充

时间:2020-03-02 02:07:00

标签: c# list combobox formatting settings

我有一个组合框,试图在用户编辑完数据后从“设置”中填充该组合框。我遇到了两个奇怪的问题之一。

问题1.)如果我编写如下代码:

var list = Properties.UserSpecific.Default.webCombo.Cast<string>().ToList(); comboBox7.Items.Add(list);

我最终得到这个:

enter image description here

所以我尝试这样写:

        string[] webDropDown = Properties.UserSpecific.Default.webCombo.Cast<string>().ToArray();
        comboBox7.DataSource = webDropDown;

但是它使我的数据全部集中在一行上。

enter image description here

据我所知,数据不在1行上。我可以写一个富文本框,它显示在单独的行上。所以我不确定我在做什么错。我还有其他代码行:

comboBox1.DataSource = Globals.combo1;

我根本没有这个问题的地方。尽我所知,问题正在发生,因为我试图让用户能够在我的设置页面中自定义Systems.Collections.Specialized.StringCollection。我是通过使用以下代码来完成此操作的:

            List<string> display = new List<string>();
        display.Add(richTextBox1.Text);
        Properties.UserSpecific.Default.webCombo.Clear();
        foreach(string str in display)
        {
            Properties.UserSpecific.Default.webCombo.Add(str);
        }
        //Save All Changes
        Properties.UserSpecific.Default.Save();

我正在使用以下方法显示此内容

            //Populate DropDown Box For Websites
        var list = Properties.UserSpecific.Default.webCombo.Cast<string>().ToList();
        foreach (string str in list)
        {
            richTextBox1.Text += str;
        }

很明显我在做错事,但是我无法弄清楚。

4 个答案:

答案 0 :(得分:3)

string[] webDropDown = Properties.UserSpecific.Default.webCombo.Cast<string>().ToArray();
comboBox7.Items.AddRange(webDropDown);

答案 1 :(得分:1)

下面的代码行导致了问题。

List<string> display = new List<string>();
display.Add(richTextBox1.Text);

它将整个文本添加为​​单个项目。

尝试以下类似方法。

 List<string> display = new List<string>();
 display = richTextBox1.Text.Split('\n').ToList<string>();

答案 2 :(得分:0)

添加是针对项目本身

尝试

foreach(string item in list)
{
    comboBox7.Items.Add(item);
}

答案 3 :(得分:0)

(代表问题作者发布了解决方案,将其移至答案空间)。

下面的Ken和Ajith让我指出了正确的方向。我最终遵循了Ken的建议并使用:

           string[] webDropDown = Properties.UserSpecific.Default.webCombo.Cast<string>().ToArray();
        comboBox7.Items.AddRange(webDropDown);

我还必须遵循Ajith的建议并进行更改:

display = richTextBox1.Text.Split('\n').ToList<string>();

除了更改了我将内容显示回我的编辑器的方式:

        var list = Properties.UserSpecific.Default.webCombo.Cast<string>().ToList();
        foreach (string str in list)
        {
            richTextBox1.Text += str + Environment.NewLine;
        }