2016-05-16 13 views
0

私はFormMainと呼ばれるメインフォームを持っています。 FormMainには、メインコンバーと呼ばれるRichTextBoxがあります。 私はFormMainの内部メソッドを作成しました:別のクラスのRichTextBoxに追加できませんか?

public void ConsoleAdd(String text) 
{ 
    mainConsole.AppendText(text); 
    mainConsole.AppendText(System.Environment.NewLine); 
} 

私は国民にメインコンソールのプロパティ修飾子を変更しました。

FormMain fMain = new FormMain(); 
fMain.ConsoleAdd("Success!"); 

しかし、それは動作しません:

は今、別のクラスに私はボタンコントロールでこれを書いています。例外は発生せず、テキストも追加されません。

何か間違っていますか?

+0

mainConsoleとは何ですか? –

+0

richtextbox @MaheshChavda –

+0

ボタンコントロールが 'ConsoleAdd()'を呼び出すと 'FormMain'はすでに存在しますか?私は新しい 'FormMain'を作成するのではなく、あなたが現在存在するものを使いたいと思っています。 – AntiTcb

答えて

2

私が見ている問題は、間違った参照でConsoleAddと呼ぶことです。 FormMainの新しい参照を作成し、ConsoleAddをこのように呼び出すようです。電話をすると、

fMain.Show(); 

が表示され、リッチテキストボックスにテキストが表示されます。正しいFormMainへの参照をConsoleAddを呼び出そうとしている関数に渡すか、シングルトンを使用する必要があります。

+0

あなたの答えをありがとう!インスタンスの動作をよりよく理解できるようになりました。 –

1

これは私がそれを解決する方法である:

FormMainでは、私はこのコードを追加:

static FormMain instance; 
public FormMain() 
{ 
    InitializeComponent(); 
    instance = this; 
}  
public static FormMain Instance 
{ 
    get 
    { 
     return instance; 
    } 
} 

そして、他のクラスで私はこのようなメソッドを呼び出した:

FormMain fMain = FormMain.Instance; 
fMain.ConsoleAdd("Success!"); 

皆様お返事ありがとうございます!

+1

この構文はシングルトンです;) –

関連する問題