Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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#_Winforms - Fatal编程技术网

C#-从表单引用类

C#-从表单引用类,c#,winforms,C#,Winforms,编辑:显然,在提出这个问题的时候,我对代码不是很了解,这导致我被禁止提问,所以我在这里试图纠正这个问题。当时我最初想引用一个类,当时我认为两个不同的类文件被视为另一个私有,现在我知道在编译时,所有的类文件(或其他称为源文件)最终都绑定在一起,我实际上需要做的是引用变量中的类,基本上: Form2 Form2=new Form2() 当你对代码一无所知的时候,VisualStudio是很难让你动脑的,我很抱歉我对观众不好 ======================================

编辑:显然,在提出这个问题的时候,我对代码不是很了解,这导致我被禁止提问,所以我在这里试图纠正这个问题。当时我最初想引用一个类,当时我认为两个不同的类文件被视为另一个私有,现在我知道在编译时,所有的类文件(或其他称为源文件)最终都绑定在一起,我实际上需要做的是引用变量中的类,基本上:

Form2 Form2=new Form2()

当你对代码一无所知的时候,VisualStudio是很难让你动脑的,我很抱歉我对观众不好

==========================================================================

我有一个windows窗体(
Form2
),它基本上是一个带有组合框的对话框。我想把两个组合框中的文本值带到一个文本框中 在
Form1
中单击按钮

如果我是从Form1开始做这一切的话,它将是:

Textbox1.Text += (value1) + (value2) + "\n";
但是由于Form1中的文本框是私有的,Form2无法识别它


我的问题是:如何让Form2确认Form1中存在文本框?

使用表单实用程序创建一个
公共静态类。
创建一个
公共静态属性
(可能是字符串)。 从另一个窗体调用该属性。 像这样:

表格一设置属性:

formutilities.formtext = textbox.Text;
表二这样称呼它

textbox.Text = formutilities.formtext;

我建议在
表单1
中声明一个公共方法:

public void UpdateTextBox(string value1, value2)
{
   Textbox1.Text += (value1) + (value2) + "\n";
}
 _form1.UpdateTextBox(/*add here your two combo boxes values*/);
并为
Form2
创建新的构造函数,以便在调用时将Form1的实例传递给Form2:

// Form2 class:
private Form1 _form1;
public Form2(Form1 form1)
{ 
 _form1 = form1;
}
然后在按钮内部单击事件调用
\u form1
上的新方法:

public void UpdateTextBox(string value1, value2)
{
   Textbox1.Text += (value1) + (value2) + "\n";
}
 _form1.UpdateTextBox(/*add here your two combo boxes values*/);

嗯,在找到这段视频后,我终于找到了答案

这个公式几乎可以翻译成
“ths.”等于“form1”。

哪个form1?你知道,一个表单可以有多个实例。(这是一个提示,看看你是否能从这里找到答案)。一般来说,如果你想在不同的类实例之间进行通信,你应该通过在这些类上创建公共属性或方法,而不是试图直接与它们的私有成员对话,来将该过程形式化。形式也是如此。是的。。。我不知道有多少人会容忍使用静态类作为中间人在对象之间传递数据。。。这看起来很糟糕。还可以创建一个公共类并在表单中实例化它。是的,但是当你可以首先使用直接属性时,你只是做了一个额外的步骤。我觉得直接向表单添加属性是一种糟糕的风格,但归根结底,这真的取决于偏好。为什么这会被认为是糟糕的形式???这正是公共财产的用途。这决不算是坏作风。另一方面,创建一个仅用于信息共享的中间类。。。