2017-03-11 2 views
0

C別のフォームから関数を呼び出すと、コードは以下である:iがメインフォーム上のテキストボックスのthatsのテキストを変更する機能を備えたメインフォームを持っている#

メインフォーム機能:

public void consoleLog(string message) 
    { 
     txtConsoleLog.Text += Environment.NewLine; 
     txtConsoleLog.Text += message; 
     txtConsoleLog.SelectionStart = txtConsoleLog.TextLength; 
     txtConsoleLog.ScrollToCaret(); 
     txtConsoleLog.Refresh(); 
    } 

の下frmConnectを

private void connectToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     Form frmConnect = new FrmConnect(this); 
     frmConnect.Show(); 
    } 

これは次のとおりです。私はこのようなボタンをクリックしたときに

はだから今、私はFRMと呼ばれる新しいフォームを開く接続

public partial class FrmConnect : Form 
{ 
    private Form mainForm; 

    public FrmConnect(Form frmMain) 
    { 
     this.mainForm = frmMain; 
     InitializeComponent(); 
    } 

    private void btnConnect_Click(object sender, EventArgs e) 
    { 
     FrmMain.Connected = true; 
     mainForm.consoleLog("Connected"); 
    } 
} 

私はボタンをクリックしたときに関数を呼び出すが、その定義には定義が含まれていません。また、FrmMainを参照するだけで動作するメインフォーム上の 'Connected'変数を変更しようとしています私はmainForm.Connected = trueを使ってそれを行うことができますか?

私はパブリック静的に機能を変更する場合、私はそのような非静的メソッドか何かでオブジェクトを参照カントとして、それはFrmMainを参照することで動作しますが、その後、私はtxtConsoleLogとエラーが出るが、任意のヘルプはにappriciatedさ

答えて

0

後でFrmConnectクラスのあなたの他の方法でFrmMain上のパブリックプロパティのすべてにあなたのアクセス権を与える

private FrmMain mainForm; 

public FrmConnect(FrmMain frmMain) 
{ 

private Form mainForm; 

public FrmConnect(Form frmMain) 
{ 

を変更する必要があります。

+0

これは、「this.mainForm = frmMainを実行しようとすると、暗黙的にSystem.windows.Forms.Form型をProject1.FrmMainに変換できません。 –

+0

両方のスポットでタイプを変更してもよろしいですか? –

+0

今や私はそれを持っているし、それは動作します、ありがとう –

1

フォームをコンストラクタに渡してプライベートメンバ変数として格納すると、両方の場所でベースタイプFormの宣言が行われます。定義した型のメソッドを使用するには、パラメータと変数の型がFrmMainである必要があります。

public partial class FrmConnect : Form 
{ 
    private FrmMain mainForm; 

    public FrmConnect(FrmMain frmMain) 
    { 
     this.mainForm = frmMain; 
     InitializeComponent(); 
    } 

    private void btnConnect_Click(object sender, EventArgs e) 
    { 
     FrmMain.Connected = true; 
     mainForm.consoleLog("Connected"); 
    } 
} 
+0

今のところ「私はthis.mainForm = frmMain; –

+0

を実行しようとすると、暗黙のうちに型system.windows.Forms.FormをProject1.FrmMainに変換できません。私のように両方の場所で変更してください。 – krillgar

関連する問題