如何通过 pubic static class 将值从一个表单传递到另一个表单中的私有 TextBox?
How to pass a value from one form to a private TextBox in another Form via a pubic static class?
我有一个 Invoice form
和几个私人文本框。我想将一些值从 search form
中的 DataGridView 传递到 Invoice form
中的那些文本框(例如,当我按 Enter 键时)。
我想要做的是将 DataGridView 中当前选定行的值传递给 Invoice Form
中的某些 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())
{
InvoiceForm.CodeTextBox = sqldr[codecolumn].Tostring
InvoiceForm.NameTextBox = sqldr[Namecolumn].Tostring
InvoiceForm.BlahTextBox = sqldr[Blahcolumn].Tostring
}
}
这会向我抛出以下错误:
codeTextBox is private... not able to do so because of protection
level...
我想我必须制作一个 public 静态 class 才能这样做,但我不知道如何做。
我是如何尝试的:
private string RetrivedCode;
private string RetrivedName;
private int RetrivedQTY;
...
Public Form1(string CodeTextBox , string NameTextBox, string BlahTextBox)
{
this.CodeTextBox= RetrivedCode;
this.NameTextBox= RetrivedName;
... and so On
}
哪些错误:
cannot implicitly convert type 'string' to
'system.windows.forms.textbox'.
嗯,错误很明显,你正在尝试convert type 'string' to 'system.windows.forms.textbox'.
while (sqldr.Read())
{
//textbox string
InvoiceForm.CodeTextBox = sqldr[codecolumn].Tostring();
InvoiceForm.NameTextBox = sqldr[Namecolumn].Tostring();
InvoiceForm.BlahTextBox = sqldr[Blahcolumn].Tostring();
}
如果您改为在文本框上设置 text
属性,错误就会消失。
while (sqldr.Read())
{
// Note the ´Text´ property.
InvoiceForm.CodeTextBox.Text = sqldr[codecolumn].Tostring();
InvoiceForm.NameTextBox.Text = sqldr[Namecolumn].Tostring();
InvoiceForm.BlahTextBox.Text = sqldr[Blahcolumn].Tostring();
}
更新:
确实是同一件事,即使是第二部分抛出错误。我假设 CodeTextBox
是一个文本框?
this.CodeTextBox.Text = RetrivedCode;
this.NameTextBox.Text = RetrivedName;
但你问错了问题。因为您不必 "make a public static class to do so"。如果您使文本框受保护(如果您的第二个表单继承了第一个表单)或 public 而不是私有的,您将能够根据我的第一个示例直接分配值。
如果您的文本框必须是私有的,请使用 public 或受保护的访问器或 public 方法来设置文本框的文本 属性 的值。
您是否尝试过在名为 [=17] 的 InvoiceForm 中将 CodeTextBox
的访问级别更改为 public =] 文件.
我有一个 Invoice form
和几个私人文本框。我想将一些值从 search form
中的 DataGridView 传递到 Invoice form
中的那些文本框(例如,当我按 Enter 键时)。
我想要做的是将 DataGridView 中当前选定行的值传递给 Invoice Form
中的某些 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())
{
InvoiceForm.CodeTextBox = sqldr[codecolumn].Tostring
InvoiceForm.NameTextBox = sqldr[Namecolumn].Tostring
InvoiceForm.BlahTextBox = sqldr[Blahcolumn].Tostring
}
}
这会向我抛出以下错误:
codeTextBox is private... not able to do so because of protection level...
我想我必须制作一个 public 静态 class 才能这样做,但我不知道如何做。 我是如何尝试的:
private string RetrivedCode;
private string RetrivedName;
private int RetrivedQTY;
...
Public Form1(string CodeTextBox , string NameTextBox, string BlahTextBox)
{
this.CodeTextBox= RetrivedCode;
this.NameTextBox= RetrivedName;
... and so On
}
哪些错误:
cannot implicitly convert type 'string' to 'system.windows.forms.textbox'.
嗯,错误很明显,你正在尝试convert type 'string' to 'system.windows.forms.textbox'.
while (sqldr.Read())
{
//textbox string
InvoiceForm.CodeTextBox = sqldr[codecolumn].Tostring();
InvoiceForm.NameTextBox = sqldr[Namecolumn].Tostring();
InvoiceForm.BlahTextBox = sqldr[Blahcolumn].Tostring();
}
如果您改为在文本框上设置 text
属性,错误就会消失。
while (sqldr.Read())
{
// Note the ´Text´ property.
InvoiceForm.CodeTextBox.Text = sqldr[codecolumn].Tostring();
InvoiceForm.NameTextBox.Text = sqldr[Namecolumn].Tostring();
InvoiceForm.BlahTextBox.Text = sqldr[Blahcolumn].Tostring();
}
更新:
确实是同一件事,即使是第二部分抛出错误。我假设 CodeTextBox
是一个文本框?
this.CodeTextBox.Text = RetrivedCode;
this.NameTextBox.Text = RetrivedName;
但你问错了问题。因为您不必 "make a public static class to do so"。如果您使文本框受保护(如果您的第二个表单继承了第一个表单)或 public 而不是私有的,您将能够根据我的第一个示例直接分配值。
如果您的文本框必须是私有的,请使用 public 或受保护的访问器或 public 方法来设置文本框的文本 属性 的值。
您是否尝试过在名为 [=17] 的 InvoiceForm 中将 CodeTextBox
的访问级别更改为 public =] 文件.