2014-07-11 14 views
1

一個DataGridView我要送的從FormB 2個文本框,當我在「驗證布通」在形式上在DataGridView CLIC的價值;這是我嘗試代碼:發送文本框的值在形式上

FormB:

namespace RibbonDemo.Fichier 
{ 
    public partial class NvFamillImmo : Form 
    { 
     public event BetweenFormEventHandler BetweenForm; 
     SqlDataAdapter dr; 
     DataSet ds = new DataSet(); 
     string req; 

     public NvFamillImmo() 
     { 
      InitializeComponent(); 
      affich(); 
     } 

     private void button2_Click(object sender, EventArgs e) //the validate buton 
     { 

      if (BetweenForm != null) 
       BetweenForm(textBox1.Text, textBox2.Text); 

     } 

     private void fillByToolStripButton_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       this.amortissementFiscalTableAdapter.FillBy(this.mainDataSet.amortissementFiscal); 
      } 
      catch (System.Exception ex) 
      { 
       System.Windows.Forms.MessageBox.Show(ex.Message); 
      } 

     } 
    } 
} 

,這是備考:

namespace RibbonDemo.Fichier 
{ 
    public delegate void BetweenFormEventHandler(string txtbox1value, string txtbox2value); 
    public partial class FammileImm : Form 
    { 

     private NvFamillImmo nvFamillImmo; 
     public FammileImm() 
     { 
      InitializeComponent(); 

     } 


     private void button2_Click(object sender, EventArgs e) 
     { 

      NvFamillImmo frm2 = new NvFamillImmo(); 
      frm2.BetweenForm += frm2_BetweenForm; 
      frm2.ShowDialog(); 
     } 


     void frm2_BetweenForm(string txtbox1value, string txtbox2value) 
     { 

     //dataGridView1.Refresh(); 

     String str1 = nvFamillImmo.textBox1.Text.ToString(); 
     this.dataGridView1.Rows[0].Cells[0].Value = str1; 

     } 
    } 
} 

編輯:我填的方法frm2_BetwwenForm但現在我得到參考的一個問題 感謝幫助

+1

我認爲你錯過了你必須添加一個新行的想要datagridview的值的部分。那會我們在frm2_BetweenForm(...) – fabricio

+0

感謝法布里西奧我已編輯frm2_Between ..方式類似: – Lina

+0

無效frm2_BetweenForm(字符串txtbox1value,串txtbox2value) { 字符串STR1 = nvFamillImmo.textBox1.Text.ToString() ; //此行中的問題 this.dataGridView1.Rows [0] .Cells [0] .Value = str1; }但我得到的基準問題 – Lina

回答

1

無需爲此創建事件。您可以在第二種形式中創建要從現有表單發送值的屬性。例如,如果您有兩種形式FormAFormB then FormB應該包含像Value1Value2這樣的屬性。

//FormB 
public class FormB :Form 
{ 
    public string Value1{get; set;} 
    public string Value2{get; set;} 
} 

現在你可以分配到的值從FORMA兩個屬性。

//FormA 
public void button1_click(object sender, EventArgs e) 
{ 
    FormB myForm = new FormB(); 
    myForm.Value1 = textBox1.Text; 
    myForm.Value2 = textBox1.Text; 
    myForm.Show(); 
} 

然後你就可以得到這兩個文本框的值到FormB。您可以處理價值爲窗體加載事件

//FormB 
public void FormB_Load(object sender, EventArgs e) 
{ 
    string fromTextBox1 = this.Value1; 
    string formTextBox2 = this.Value2; 
} 

如果FormB已經加載並希望從FORMA送超值然後創建一個方法UpdateValues()和修改屬性調用該方法。

//FormB 
string _value1 = string.Empty; 
public string Value1 
{ 
    get { return _value1; } 
    set { 
     _value1 = value; 
     UpdateValues(); 
    } 
} 
string _value2 = string.Empty; 
public string Value1 
{ 
    get { return _value2; } 
    set { 
     _value2 = value; 
     UpdateValues(); 
    } 
} 
private void UpdateValues() 
{ 
    string fromTextBox1 = this.Value1; 
    string fromTextBox2 = this.Value2; 
} 

和從FORMA分配在FormB.Value1FormB.Value2和屬性的值。

//FormA 
FormB myForm = new FormB(); 
public void button1_click(object sender, EventArgs e) 
{   
    if (myForm != null && myForm.IsDisposed == false) 
    { 
     myForm.Value1 = textBox1.Text; 
     myForm.Value2 = textBox1.Text;   
    } 
} 

當值從FORMA更新然後UpdateValues()方法將被調用。

+0

謝謝shell和其他人工作:DI有其他問題,請問我該怎麼發送從formB到forma的值無需創建新實例?再次感謝 – Lina

+0

@Lina是你的FormB在'Modal Dialog'中顯示?我的意思是我會展示'FormB'。使用Show()方法或ShowDialog()方法? – Shell

+0

FormB它是一個表單我使用Show()方法來顯示錶單:) – Lina

相關問題