質問

I 2つのフォーム(Form1におよびフォーム2)およびクラス(クラス1)を有します。 Form1は、ボタン(Button1を)含まれており、Form2が、リッチテキストボックス(textBox1テキストボックス)私はForm1のButton1を押すと、私は方法(DoSomethingWithTextが)と呼ばれるようにしたいが含まれています。 「 - オブジェクト参照オブジェクトのインスタンスに設定されていないとNullReferenceException」私は入れません。ここでのコード例があります:

をForm1ます:

namespace Test1
{  
    public partial class Form1 : Form  
    {
        Form2 frm2;

        Class1 cl;

        public Form1()  
        { 
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frm2 = new Form2(); 
            cl.DoSomethingWithText();
            frm2.Show()
        } 
   }  
}  

のClass1ます:

namespace Test1
{
      class Class1
      {
           Test1.Form2 f2;
           public void DoSomethingWithText()
           {
                f2.richTextBox1.Text = "Blah blah blah";
           }
      }
}

どのように私はクラス内からこのメソッドを呼び出すことができますか?すべてのヘルプは大歓迎されます。

役に立ちましたか?

解決

あなたはc1f2をインスタンス化する必要があります。これを試してください:

public partial class Form1 : Form  
{
    Form2 frm2;
    Class1 cl;
    public Form1()  
    {  
        c1 = new Class1();
        InitializeComponent();  
    }
    private void button1_Click(object sender, EventArgs e)
    {
      frm2 = new Form2();
      cl.DoSomethingWithText(frm2);
      frm2.Show();
    } 
}

class Class1
{

    public void DoSomethingWithText(Test1.Form2 form)
    {
        form.richTextBox1.Text = "Blah blah blah";
    }
}

のUPDATE

あなたがForm2の新しいバージョンをインスタンス化しているので、キースは、指摘したように、

、豊富なテキストボックスは何とか何とか何とかコードを表示することはありません。私はこの問題を解決するために、サンプルを更新しました。

他のヒント

あなたはそれを使用しようとした前に、クラス1のインスタンスをインスタンス化していない

あなたがする必要があると思います:

private void button1_Click(object sender, EventArgs e)
{
    c1 = new Class1();
    frm2 = new Form2();
    cl.DoSomethingWithText(frm2);
    frm2.Show();
} 

私はまた、その後、(他のf2は、そのクラスでインスタンス化されていないよう。

あなたは別のような例外で終わるだろうを使用するためのDoSomethingWithTextメソッドにFRM2の通過に追加しましたありません

あなたは(そのことについてまたはF2)CLを初期化されることはありません。

のいずれかを最初に(@Ray Booysenの答えを参照)または静的メソッドに変換インスタンス化します:

class Class1
{
   public static void DoSomethingWithText( Test1.Form2 f2 )
   {
      f2.richTextBox1.Text = "Blah blah blah";
   }
}

するとます:

 frm2 = new Form2();
 Class1.DoSomethingWithText( frm2 );
 frm2.Show();

あなたは、静的クラスとしてDoSomethingWithTextを宣言するかのClass1への参照をインスタンス化するのいずれかが必要です。

public static void DoSomethingWithText()           
  {                
    //Code goes here;           
  }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top