如何将值从一个窗体传递到另一个窗体的私有TextBox?

时间:2018-11-18 11:01:55

标签: c# winforms class static public

我有Form1,其中包含几个私有文本框。我想将某些值从Form2中的DataGridView传递到Form1中的那些TextBoxes(例如,当我按Enter时)。
我想做的是将DataGridView中当前选定的Row的行的值传递给Form1中的TextBoxes:

(我知道如何在datagridview中获取所选行的值,我的问题只是标题...)

if (e.KeyCode == Keys.Enter)
{
    SqlCommand sqlcmd = new SqlCommand("SELECT ID FROM X WHERE ID=" +
                        dataGridView1.CurrentRow.Cells[0].Value + "", sqlcon);
    SqlDataReader sqldr = sqlcmd.ExecuteReader();
    while (sqldr.Read())
    {
        Form1.CodeTextBox = sqldr[codecolumn].Tostring
        Form1.NameTextBox = sqldr[Namecolumn].Tostring
        Form1.BlahTextBox = sqldr[Blahcolumn].Tostring                               
    }
}

大吼大叫我:

  

codeTextBox是私有的...由于受到保护,因此无法这样做   级别...

我认为我必须做一个静态类,但是我不知道怎么做。
如果有人能解释一下,我会很感激。

Form1班级:

 public partial class Form1 : Form
 {
    public static string searchString;

    SqlConnection sqlcon = 
       new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\\Database1.mdf;Integrated Security=True");

    public Form1()
    {
        InitializeComponent();
        SqlDataAdapter sqlda = new SqlDataAdapter("GetInvoice", sqlcon);
        DataTable dt = new DataTable();
        sqlda.Fill(dt);
        dataGridView1.DataSource = dt;
     }
      //Xbuton_click datagridview_blah ...
}

2 个答案:

答案 0 :(得分:2)

使用如下参数声明私有变量和Form1构造函数:

private string CodeTextBox; private string NameTextBox; private string BlahTextBox;

Public Form1(string CodeTextBox , string NameTextBox, string BlahTextBox)
{
  this.CodeTextBox= CodeTextBox; 
  this.NameTextBox= NameTextBox; 
  this.BlahTextBox = BlahTextBox; 
}

将值分配给文本框

txtCodeTextBox.Text = CodeTextBox;
txtNameTextBox.Text = NameTextBox;
txtBlahTextBox.Text = BlahTextBox;

像这样称呼

if (e.KeyCode == Keys.Enter)
{
  SqlCommand sqlcmd = new SqlCommand("SELECT ID FROM X WHERE ID=" + dataGridView1.CurrentRow.Cells[0].Value + "", sqlcon);
  SqlDataReader sqldr = sqlcmd.ExecuteReader();
  while (sqldr.Read())
  {
   string CodeTextBox = sqldr[codecolumn].Tostring;
   string NameTextBox = sqldr[Namecolumn].Tostring;
   string BlahTextBox = sqldr[Blahcolumn].Tostring;
   Form1 frm = new Form1(CodeTextBox, NameTextBox, BlahTextBox);
  }
}

答案 1 :(得分:1)

尝试

CodeTextBox文本更改事件

 public void CodeTextBox_TextChanged(object sender, EventArgs e)
        {
            CodeTextBox.Text = ((TextBox)sender).Text;
        }

SqlDataReader

 while (sqldr.Read())
                     {
        Form1 form1 = new Form1();
        TextBox t = new TextBox();

        t.Text=sqldr[codecolumn].Tostring;

        form1.CodeTextBox_TextChanged(t,null);

                        }