2012-04-24 84 views
0

我使用dosnt的API響應Form_Load事件。所以我想用包含在我用來調用包含CheckedlistBox1的對話框的按鈕中的代碼填充CheckedListBox1。這是我第一次嘗試。從前一個對話框填充CheckedBoxList1

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

我不會說英語。我正在與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(); 
} 

我希望能回答你的問題。

+0

我收到錯誤「Object reference not set to a instance of a object」。我在慢慢學習。這是我的代碼。 – topofsteel 2012-04-24 15:37:49

+0

非常感謝你! – topofsteel 2012-04-24 19:06:24

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()); 
     } 
    } 
}