我正在使用dos的API响应Form_Load事件。所以我想用CheckedListBox1填充我用来调用包含CheckedlistBox1的对话框的按钮。这是我的第一次尝试。
private void button3_Click(object sender, EventArgs e)
{
TextSelectorForm textSelectionForm = new TextSelectorForm();
CheckedListBox checkedListBox1;
string line;
StreamReader file = new StreamReader("test.txt");
while ((line = file.ReadLine()) != null)
{
TextSelectorForm.checkedListBox1.Items.Add(line);
}
file.Close();
textSelectionForm.Show();
}
思想,想法,例子?谢谢!
我收到错误“对象引用未设置为对象的实例”。我正在慢慢地学习。这是我的代码。
public partial class Form1 : System.Windows.Forms.Form
{
public Form1(ExternalCommandData commandData)
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CheckedListBox.ObjectCollection data = null;
string line;
StreamReader file = new StreamReader(@"C:\test.txt");
while ((line = file.ReadLine()) != null)
{
data.Add(line);
}
file.Close();
Form2 form2 = new Form2(data);
form2.Show();
}
}
public partial class Form2 : System.Windows.Forms.Form
{
public Form2(CheckedListBox.ObjectCollection formdata)
{
InitializeComponent();
if (formdata != null)
{
this.checkedListBox1.Items.AddRange(formdata);
}
}
}
(PS。如果我想添加到我的问题怎么办?)
答案 0 :(得分:0)
我不会说英语。我正在处理Google翻译。
如果我理解您的问题,您需要编制以下内容: 1.从文本文件中恢复数据以填充CheckedListBox 2.将恢复的数据发送到将显示的表单。
我建议如下: 1.创建一个ListBox.ObjectCollection类型的对象,用于存储所需的信息。 2.以ListBox.ObjectCollection接受形式创建构造函数作为参数。 3.在表单的构造函数中,将参数分配给ListBox。
//CONSTRUCTOR IN TEXTSELECTORFORM
public TextSelectorForm(ListBox.ObjectCollection dataFromOtherForm) {
InitializeComponents();
//Add this code after InitializeComponents();
if (dataFromOtherForm != null) {
this.listBoxInThisForm.AddRange(dataFromOtherForm);
}
}
//CODE FOR BUTTON IN OTHER FORM
private void button3_Click(object sender, EventArgs e) {
//Stores the values to display in the ListBox
ListBox.ObjectCollection data = null;
//Your code from retrieve data
string line;
StreamReader file = new StreamReader("test.txt");
while ((line = file.ReadLine()) != null) {
data.Add(line);
}
file.Close();
//Form to send the data
TextSelectorForm textSelectionForm = new TextSelectorForm(data);
textSelectionForm.Show();
}
我希望回答你的问题。
答案 1 :(得分:0)
抱歉,没有测试过代码。
确实启动了NullReference,因为我没有创建类的新实例(立即指定空值),因此Add方法失败。
使用ListBox.ObjectCollection不是解决此问题的正确方法,我向我道歉。对于这种情况,最好使用泛型集合List。重写代码:
public partial class Form1 : System.Windows.Forms.Form {
public Form1(ExternalCommandData commandData) {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
List<string> data = new List<string>();
string line;
StreamReader file = new StreamReader(@"C:\test.txt");
while ((line = file.ReadLine()) != null) {
data.Add(line);
}
file.Close();
Form2 form2 = new Form2(data);
form2.Show();
}
}
public partial class Form2 : System.Windows.Forms.Form {
public Form2(List<string> formdata) {
InitializeComponent();
if (formdata != null) {
this.checkedListBox1.Items.AddRange(formdata.ToArray());
}
}
}