0

ConsoleText と呼ばれるリッチテキスト ボックスにテキストを追加しようとしています。うまくいきません。クラスのリッチテキストボックスにアクセスするために、フォームでプロパティを使用しています。

次のようになります。

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

悲しいことに、リッチテキストボックスにテキストが表示されません。プロパティで messageBox を使用して、値が渡されていることを確認できるため、機能することはわかっています。

事前に感謝します。これについて本当に助けが必要です。

4

3 に答える 3

2

呼び出しは既存のForm1 f = new Form1();フォームへの参照を提供しません。フォームのコントロールに空白/デフォルト値を持つ新しいフォームを作成します。

これを解決する方法は、設計によって大きく異なります。クラスをそのフォーム実装に結び付けたい場合、フォームへの参照、コントロールへの参照、または渡された対象のコントロールの値のいずれかがクラスに必要です。

例えば:

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

よりクリーンな解決策はMcDonalds、クラスをそのフォーム クラスに結び付けるのではなく、クラスから値を返し、FORM にコントロール値を適切に設定させることです。

于 2013-04-16T19:39:36.023 に答える
2

シングルトンを使用できます:

シングルトンを使用すると、単一インスタンスを簡単に作成できます。それらは、データの単一の割り当てとインスタンスを許可します。シングルトン型を確認します。最速の実装の 1 つが表示されます。そして、他の可能性を検討します。

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");
于 2017-03-05T03:52:50.303 に答える