2012-09-19 223 views
0

我有一個ListBoxControl在窗體(Form1)和它下面的一個按鈕,我想向我展示另一個窗體(Form2)。從另一個表格添加一個項目到一個ListBoxControl

在Form2中,我有一個TextBox和一個按鈕,我希望當我單擊此按鈕時將TextBox中的當前文本添加到另一個窗體Form1中的ListBoxControl中。

我該怎麼做?

形式1:

FORM 1

表格2:

FORM2

+0

是您的關鍵字的形式模態(的ShowDialog)或無(節目)? –

+0

它是(showDialog) –

回答

1

有一個使用對話框的標準模式。

public string KeyWord 
{ 
    get { return Textbox1.Text; } 
} 

在Form1上,單擊按鈕時:

Form 2上,用於讀取控制提供財產

using (Form2 dialog = new Form2()) 
{ 
    // init Form2 

    var result = dialog.ShowDialog(); 

    if (result == DialogResult.OK) 
    { 
     sting newKeyWord = dialog.KeyWord; 
     // add to listbox 
    } 
} 
1

使用其它形式的在此代碼:

Form1 frm; 
    if ((frm= (Form1)IsFormAlreadyOpen(typeof(Form1))) != null) 
    { 
     //get the value of the form 
     //frm.listboxcontrol.text 
    } 

    public static Form IsFormAlreadyOpen(Type FormType) 
    { 
    return Application.OpenForms.Cast<Form>().FirstOrDefault(OpenForm => OpenForm.GetType() == FormType); 
    } 
1

您可以在Form1中創建一個公共方法:

public SampleMethodName(string Value) 
{ 
    // Write your code to add it the list. 
    ListBox1.Add(Value); 
} 

現在,當用戶打開的窗口2,添加一些文本的文本框,然後按[驗證, 您可以創建Form1的一個實例。

protected void valider_click(object sender, eventargs e) 
{ 
    Form1 frm = new Form1(); 
    frm.SampleMethodName(TextBox.Value); 
} 
+0

在表格2中,它給了我這個錯誤: '錯誤'GestionBib.Form1'沒有包含'AddMotCle'的定義,也沒有接受類型''的第一個參數的擴展方法'AddMotCle' GestionBib.Form1'可以找到(你是否缺少使用指令或程序集引用?)' –

+0

你在form1中使用公共方法嗎?如果是這樣,那麼它不應該產生異常? – 2012-09-19 12:00:43

1

如果你不想使用對話框結果(正如Henk所建議的那樣),但是如果您想要打開第二個表單,請嘗試以下操作。即如果你想在添加ListBox項目時打開第二個窗體。

表1:

using System; 
using System.Windows.Forms; 

namespace FormComm 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      var form2 = new Form2(this); 
      form2.Show(); 
     } 

     delegate void AddListBoxItemCallback(string text); 
     public void AddListBoxItem(object item) 
     { 
      if (this.InvokeRequired) 
      { 
       AddListBoxItemCallback callback = new AddListBoxItemCallback(AddListBoxItem); 
       this.Invoke(callback, new object[] { item }); 
      } 
      else 
      { 
       this.listBox1.Items.Add(item); 
      } 

     } 
    } 
} 

表2:

using System; 
using System.Windows.Forms; 

namespace FormComm 
{ 
    public partial class Form2 : Form 
    { 
     private Form1 _form = null; 

     public Form2(Form1 form) 
     { 
      InitializeComponent(); 

      this._form = form; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      _form.AddListBoxItem(textBox1.Text); 
     } 
    } 
} 
相關問題