2012-09-30 235 views
0

對於C#我還是一個新手,所以請耐心等待。從Form2中的文本框寫入Form1中的Datagridview

我有Form1與DataGridViewButton。此按鈕打開Form2

Form2包含TextBoxButton,其關閉Form2

我需要將TextBox中的文本Form2寫入Form1中DataGridView的第一個單元格中。在我正在開發的應用程序中,Form1中的DataGridView中已有其他數據。

我已經上傳了Visual Studio 2010文件here

編輯:

請看看這個截圖:

enter image description here

這裏是我使用的代碼:

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form1 form1 = new Form1(); 
     form1.dataGridView1.Rows[0].Cells[0].Value = textBox1.Text; 
     this.Close(); 
    } 
} 

我似乎實例化一個新的Form1,當我不想。

欣賞幫助。

+3

請請勿將代碼發佈到第三方服務。將相關部分的源代碼直接放入您的問題中。 –

+2

你應該給你的表格命名。 – SLaks

+0

Ondrej Ttucny:我添加了代碼。 – user1580591

回答

1

您不需要Form2來實例化(再次)主窗體(Form1)。

更合適的方法是打開包含文本框的輔助表單作爲模式對話框窗口,並讓開啓者窗體(Form1)訪問用戶輸入的文字Form2實例。

這裏介紹如下所需的變革:

Form2變化:

1.-添加一個新的類成員來存儲在文本框textBox1要引入的字符串。

public String textFromTextBox = null; 

2:將代碼添加到您的OK按鈕的CLIC事件處理程序,讓你在新的類成員textFromTextBox在文本框中推出的值存儲:

3.-最後,在同樣的clic事件處理代碼將DialogResult屬性設置爲DialogResult.OK

Form2代碼應該是這樣的:

public partial class Form2 : Form 
{ 
    [...] 

    // This class member will store the string value 
    // the user enters in the text-box 
    public String textFromTextBox = null; 

    [...] 

    // This is the event-handling code that you must place for 
    // the OK button. 
    private void button1_Click(object sender, EventArgs e) 
    { 
     this.textFromTextBox = this.textBox1.Text; 
     this.DialogResult = DialogResult.OK; 
    } 
} 

Form1改變

1.-在與標籤 「輸入文字」 您的按鈕(即實際上是缺少在你的代碼),在Click事件處理程序中將打開Form2所需的代碼作爲模式Dialog打開。

2.-通過恢復存儲在Form2textFromTextBox成員中的值來相應地設置數據網格中的單元格值。

3.-最後處理你的Form2實例。

Form2 myFormWithATextBox = new Form2(); 

    if (myFormWithATextBox.ShowDialog(this) == DialogResult.OK) 
    { 
     this.dataGridView1.Rows[0].Cells[0].Value = myFormWithATextBox.textFromTextBox; 
    } 
    myFormWithATextBox.Dispose(); 

要考慮到你的主要形式是Form1Form2它只是一個輔助表單控件,它不應該在你的應用程序的流量多的控制,因此不承擔實例化的主要形式的責任。

0

您可以從形式傳遞變量到另一個創建接受參數,如下另一承包商: -

1)去到Form1,然後創建另一個承包商:

public Form1(string myString) 
    { 
     InitializeComponent(); 

     if (myString != null) 
      dataGridView1.Rows[0].Cells[0].Value = myString; 
    } 

2)去窗口2和按鈕下方寫這樣的代碼:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form1 frm1 = new Form1(textBox1.Text); 
     frm1.ShowDialog(); 
    } 

Here you are your application after modification

相關問題