我正在尝试在我的richtextbox中添加文本,该文本名为ConsoleText。它工作得不好。我正在使用表单中的属性来访问Class中的richtextbox。
看起来像这样:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Skipped the rest
public string ACText
{
set
{
ConsoleText.AppendText(value);
}
}
现在来自我班级的构造函数。
public McDonalds(string email, string pass)
{
Form1 f = new Form1();
f.ACText = "test";
}
遗憾的是,我的richtextbox中没有显示任何文字。我知道它有效,因为我可以在属性中使用messageBox并看到值传递给它。
在此先感谢我真的需要帮助。
答案 0 :(得分:2)
调用Form1 f = new Form1();
并未提供对现有表单的引用,它会在表单的控件中创建一个带有空白/默认值的 new 。< / p>
如何解决这个问题在很大程度上取决于您的设计。如果你想把你的类绑定到那个表单实现,我们的类需要对表单的引用,对控件的引用,或者你感兴趣传递给它的控件的值。
例如:
public McDonalds(string email, string pass, Form1 form)
{
form.ACText = "test";
}
更清晰的解决方案是从McDonalds
类返回一个值,让FORM适当地设置控件值,而不是将类绑定到该表单类。
答案 1 :(得分:1)
使用Form1
类绑定方法ACText (string val)
创建委托,并将Delegate
传递给McDonalds
类。解雇代表
namespace YourNameSpace
{
public delegate void RichTextBoxDelegate(string text);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void ACText(string s)
{
ConsoleText.AppendText(s);
}
// In Some Method Call MCDonald's form
public void ShowMcDonalds()
{
RichTextBoxDelegate deleg = new RichTextBoxDelegate(ACText);
MCdonalds ob = new McDonalds(deleg);
ob.show();
}
}
}
将代表传递给麦当劳表格
点击Delagate
public McDonalds(RichTextBoxDelegate sp)
{
Form1 f = new Form1();
sp("This is Test");
}
deleg("Test value"); // form McDonald's Form
答案 2 :(得分:0)
您可以使用Singleton:
单身人士让单个实例变得容易。它们允许单个分配和数据实例。我们回顾一下单身人士的类型。我们看到了最快的实现之一。我们还会审查其他可能性。
public partial class Form1 : Form
{
public static Form1 instance = null;
public Form1()
{
instance = this; //add this class to singleton
InitializeComponent();
}
public void Show(string Message)
{
MyConsole.Text = Message;
}
另一堂课:
Form1.instance.Show("blah blah");