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) { }
}
一个更简单的选择
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);