从类中访问Richtextbox

本文关键字:Richtextbox 访问 | 更新日期: 2023-09-27 18:09:36

我试图在我的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并看到值被传递给它。

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

从类中访问Richtextbox

调用Form1 f = new Form1();不会给您一个现有表单的引用,它会在表单的控件中创建一个新的,其中包含空白/默认值。

如何解决这个问题很大程度上取决于你的设计。如果你想把你的类绑定到那个表单实现,我们的类要么需要一个对表单的引用,要么需要一个对控件的引用,要么需要传递给它的你感兴趣的控件的值。 例如:

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

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

你可以使用Singleton:

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

Form1类绑定方法ACText (string val)中创建Delegate,并将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();
        }
    }
}

传递给McDonalds表单

Just fire the delegate

public McDonalds(RichTextBoxDelegate sp)
{
    Form1 f = new Form1();
    sp("This is Test");
}
deleg("Test value");    // form McDonald's Form