C# 从类中访问Richtextbox

C# 从类中访问Richtextbox,c#,C#,我正试图在我的richtextbox中添加文本,它被称为ConsoleText。它不太好用。我正在使用表单中的属性访问类中的richtextbox 看起来是这样的: public partial class Form1 : Form { public Form1() { InitializeComponent(); } //Skipped the rest public string ACText { set

我正试图在我的richtextbox中添加文本,它被称为ConsoleText。它不太好用。我正在使用表单中的属性访问类中的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,并查看值是否传递给它


提前谢谢,我真的需要帮助。

呼叫
form1f=newform1()不提供对现有表单的引用,而是在表单控件中创建一个新表单,其中包含空白/默认值

如何解决这个问题很大程度上取决于您的设计。如果要将类与该表单实现绑定,则我们的类需要对表单的引用、对控件的引用或传递给它的感兴趣的控件的值

例如:

public McDonalds(string email, string pass, Form1 form)
{
    form.ACText = "test";
}

一个更简洁的解决方案是从您的
McDonalds
类返回一个值,让表单适当地设置控制值,而不是将您的类绑定到该表单类。

调用
Form1 f=new Form1()不提供对现有表单的引用,而是在表单控件中创建一个新表单,其中包含空白/默认值

如何解决这个问题很大程度上取决于您的设计。如果要将类与该表单实现绑定,则我们的类需要对表单的引用、对控件的引用或传递给它的感兴趣的控件的值

例如:

public McDonalds(string email, string pass, Form1 form)
{
    form.ACText = "test";
}

一个更简洁的解决方案是从您的
McDonalds
类返回一个值,让表单适当地设置控制值,而不是将您的类绑定到该表单类。

表单1
类绑定方法
ACText(string val)
中创建委托,然后将
代表
传递给
麦当劳
课程。解雇代表

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();

        }
    }
}
把表格传给麦当劳

烧掉玛瑙就行了

public McDonalds(RichTextBoxDelegate sp)
{
    Form1 f = new Form1();
    sp("This is Test");
}

deleg("Test value");    // form McDonald's Form

Form1
类绑定方法
ACText(string val)
中创建委托,并将
委托
传递给
麦当劳
类。解雇代表

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();

        }
    }
}
把表格传给麦当劳

烧掉玛瑙就行了

public McDonalds(RichTextBoxDelegate sp)
{
    Form1 f = new Form1();
    sp("This is Test");
}

deleg("Test value");    // form McDonald's Form
您可以使用:

单实例使拥有单实例变得容易。它们允许单个分配和数据实例。我们回顾了单例类型。我们看到了最快的实现之一。我们回顾了其他可能性


另一类:

        Form1.instance.Show("blah blah");
您可以使用:

单实例使拥有单实例变得容易。它们允许单个分配和数据实例。我们回顾了单例类型。我们看到了最快的实现之一。我们回顾了其他可能性


另一类:

        Form1.instance.Show("blah blah");

你在哪里写的麦当劳功能。。这意味着您正试图从不同的类更新Ui。正确。?如果您试图向rtf添加纯文本,您可以简单地使用.text,如果您试图在使用中设置一些rtf。rtf@AkshayJoy->它是McDonalds类的构造函数,你在哪里编写了McDonalds函数。。这意味着您正试图从不同的类更新Ui。正确。?如果您试图向rtf添加纯文本,您可以简单地使用.text,如果您试图在使用中设置一些rtf。rtf@AkshayJoy->它是McDonalds类的构造函数我不太擅长委托,我应该在McDonalds类中编写什么?在我的表单中写入所有行只会给我一个错误:字段初始值设定项无法引用非staic字段、方法或属性windowsformsapplication10.form1.ActText(string)无法真正了解如何触发代理。提前谢谢我不是很擅长代表,我应该在我的麦当劳课上写些什么?在我的表单中写入所有行只会给我一个错误:字段初始值设定项无法引用非staic字段、方法或属性windowsformsapplication10.form1.ActText(string)无法真正了解如何触发代理。advanceIt’s说form1是一种类型,但它的用法类似于字段、方法或属性。当我尝试将其传递给构造函数时。请参阅我更新的答案。请注意,通过构造函数传递表单将类与
Form1
类紧密耦合,这意味着您不能在不传递
Form1
的情况下使用类。这是一个可行的解决方案,但不会重复使用。据说form1是一种类型,但像字段、方法或属性一样使用。当我尝试将其传递给构造函数时。请参阅我更新的答案。请注意,通过构造函数传递表单将类与
Form1
类紧密耦合,这意味着您不能在不传递
Form1
的情况下使用类。这是一个可行的解决方案,但不会重复使用。