Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过公共静态类将值从一个表单传递到另一个表单中的私有文本框?_C#_Class_Constructor_Static_Public - Fatal编程技术网

C# 如何通过公共静态类将值从一个表单传递到另一个表单中的私有文本框?

C# 如何通过公共静态类将值从一个表单传递到另一个表单中的私有文本框?,c#,class,constructor,static,public,C#,Class,Constructor,Static,Public,我有一张带有几个私人文本框的发票表单。我想将搜索表单中的DataGridView中的一些值传递给发票表单中的那些文本框(例如,当我按Enter键时)。 我要做的是将DataGridView中当前选定行的值传递给发票表单中的某些文本框: 我可以用以下代码来说明这一点: (我知道如何获取datagridview中选定行的值我的问题只是标题…) 这会向我抛出以下错误: codeTextBox是私有的。。。由于受到保护而不能这样做 级别 我想我必须创建一个公共静态类来实现这一点,但我不知道怎么做。 我是

我有一张带有几个私人文本框的
发票表单。我想将
搜索表单中的DataGridView中的一些值传递给
发票表单中的那些文本框(例如,当我按Enter键时)。
我要做的是将DataGridView中当前选定行的值传递给
发票表单中的某些文本框
: 我可以用以下代码来说明这一点: (我知道如何获取datagridview中选定行的值我的问题只是标题…)

这会向我抛出以下错误:

codeTextBox是私有的。。。由于受到保护而不能这样做 级别

我想我必须创建一个公共静态类来实现这一点,但我不知道怎么做。 我是如何尝试的:

 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 
    }
哪些错误:

无法将类型“string”隐式转换为 “system.windows.forms.textbox”


错误很明显,您正在尝试
将类型“string”转换为“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; 
但你问错了问题。因为您不必“创建一个公共静态类来这样做”。如果您将文本框设置为受保护(如果您的第二个表单继承了第一个表单)或public而不是private,则可以根据我的第一个示例直接赋值


如果您的文本框必须是私有的,使用公共或受保护的访问器或设置文本框文本属性值的公共方法。

您是否尝试在名为InvoiceForm.Designer.csInvoiceForm文件中将
CodeTextBox
的访问级别更改为public。

您完全明白我的问题了错。您提到的错误是针对我的第二个代码块,而不是针对我的第一个代码块。请参见编辑:错误仍然很清楚,解决方案相同。但是你问的问题可能不是你需要回答的问题。@absulute455你有什么进展吗?您是否尝试根据我的编辑将文本框设置为公共,然后设置文本属性?这是一个很好的观点。我应该在InvoiceForm.Designer.cs中查找什么单词?CodeTextBox我想这是文本框的属性名
this.CodeTextBox.Text = RetrivedCode; 
this.NameTextBox.Text = RetrivedName;