I have 2 Forms (Form1 and Form2) and a class (Class1). Form1 contains a button (Button1) and Form2 contains a RichTextBox (textBox1) When I press Button1 on Form1, I want the method (DoSomethingWithText) to be called. I keep getting "NullReferenceException - Object reference not set to an instance of an object". Here is a code example:
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";
}
}
}
How can I call this method from within a class? Any help is greatly appreciated.
You have to instantiate c1
and f2
. Try this:
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
As Keith has pointed out, because you're instantiating a new version of Form2
, the rich textbox will never show the blah blah blah code. I've updated the sample to fix this.
You haven't instantiated an instance of Class1 before you've tried to use it
You'd need to do:
private void button1_Click(object sender, EventArgs e)
{
c1 = new Class1();
frm2 = new Form2();
cl.DoSomethingWithText(frm2);
frm2.Show();
}
Not I've also added in the passing of frm2 in to the DoSomethingWithText method for it to then use (else you'd end up with another similar exception as f2 hasn't been instantiated in that class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With