comboBox中的数组列表

本文关键字:列表 数组 comboBox | 更新日期: 2023-09-27 18:12:37

我需要帮助创建一个ArrayList,将单词添加到ComboBox中,然后允许用户单击单词,然后将其插入RichTextBox中。我确实有以下代码,但它不工作。希望有人能帮助我。

public partial class WordEditorApp : Form
{
//Creating an arraylist for the combobox.
ArrayList al = new ArrayList();
public WordEditorApp()
{
    InitializeComponent();
    //Initializing the radio buttons.
    upperCase.Checked = false;
    lowerCase.Checked = false;
    //Adding items to the arraylist.
    al.Add("Grams");
    al.Add("Aristrocrats");
    al.Add("Sophisticated");
    al.Add("Corruption");
    al.Add("Interrupt");
    al.Add("Operation");
    al.Add("Decision");
    al.Add("Bantam");
    al.Add("Brochure");
    al.Add("Hydraulics");
    al.Add("Properties");
    //for loop to add items to the arraylist.
    for (int i = 0; i < al.Count; i++)
    {
        comboBox1.Items.Add(al[i].ToString());
    }
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    try
    {
        //Selected word from the combo box is appended into the textbox.
        richTextBox1.AppendText(ArrayList.SelectedItem.ToString());
    }
    catch (Exception) { }
}

comboBox中的数组列表

一个更简单的选择

string[] al = { "Grams", "Aristrocrats", "Sophisticated", "Corruption", "Interrupt", 
               "Operation", "Decision", "Bantam", "Brochure", "Hydraulics", "Properties" };
comboBox1.Items.AddRange(al);

我是这样做的:

从使用当前的、高效的、类型安全的、可扩展的对象和方法开始:

    List<string> words = new List<string>()
    {
        "Grams", "Aristrocrats", "Sophisticated",
        "Corruption", "Interrupt", "Operation",
        "Decision", "Bantam", "Brochure", "Hydraulics", "Properties"
    };
    comboBox1.Items.AddRange(words.ToArray());

然后我不会追加文本,而是将其设置为SelectedText;这意味着用户可以在任何地方插入它,从而一次完成追加、插入和替换:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    richTextBox1.SelectedText = comboBox1.SelectedItem.ToString();
}

在每个单词后面加一个空格也是一个友好的主意。

注意,如果你只想加载固定数量的项目,你也可以这样做:

comboBox1.Items.AddRange(new[] { "Grams", "Aristrocrats", "Sophisticated",
             "Corruption", "Interrupt", "Operation", "Decision", 
             "Bantam", "Brochure", "Hydraulics", "Properties" });

这里不需要本地列表或数组,类型从值中解析。

但是如果您在类级别声明List<string>,则可以使用用户输入的新单词对其进行扩展,然后将其存储在文件中,创建一个不断增长的单词列表。

我觉得这是不对的:

   //Selected word from the combo box is appended into the textbox.
    richTextBox1.AppendText(ArrayList.SelectedItem.ToString());
                              ^

ArrayList没有名为SelectedItem的静态属性。你是说comboBox1.SelectedItem.ToString();吗?

试试下面的代码。

richTextBox1.AppendText(comboBox1.Text);

如果您坚持使用ArrayList类(已弃用):

// static: you want just one instance for all WordEditorApp instances
private static ArrayList al = new ArrayList() { 
  "Grams",
  "Aristrocrats",
  "Sophisticated",
  "Corruption",
  "Interrupt",
  "Operation",
  "Decision",
  "Bantam",
  "Brochure",
  "Hydraulics",
  "Properties"
};
...
comboBox1.Items.AddRange(al.OfType<String>());

更好的设计是将ArrayList更改为List<String>String[]:

private static String[] al = new String[] {
  "Grams",
  "Aristrocrats",
  ... 
  "Properties"
};
...
// No need in OfType<String>() here
comboBox1.Items.AddRange(al);