MainForm の別のオブジェクトをインスタンス化しないでください。これにより、複製が作成され、新しい MainForm 内のすべてのオブジェクトが実際の MainForm の値を持たなくなります。
アプローチ 1
以下のように MainForm の静的インスタンスを作成してみることができます
public partial class MainForm : Form
{
public static MainForm Instance = null;
public MainForm()
{
InitializeComponent();
Instance = this;
}
public SomeMethod()
{
}
}
パネル クラスがあれば、MainClass のパブリック メソッドと変数に簡単にアクセスできます。
class Panel : Form
{
public Panel()
{
MainForm.Instance.SomeMethod();
}
}
編集:ハンドルをパラメーターとしてフォームに渡します (Ben Voigtの提案から)
アプローチ 2:
Ben が示唆したように、より安全なコードを作成することも重要です。よりクリーンなアプローチは、コントロールのハンドルをパラメーターとして渡し、それらにアクセスすることです。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
TestClass test = new TestClass();
test.ModifyText(textBox1);
}
}
public class TestClass
{
public void ModifyText(TextBox textBox)
{
textBox.Text = "New text";
}
}