-1
Form1にテキストボックスがあります。 Form1呼び出しクラス1、クラス1呼び出しクラス2。 Form1を変数として渡さずにclass2からTextboxを設定する方法。テキストボックスのテキストを、パスフォームを変数として使用しない別のクラスに変更しますか?
Form1にテキストボックスがあります。 Form1呼び出しクラス1、クラス1呼び出しクラス2。 Form1を変数として渡さずにclass2からTextboxを設定する方法。テキストボックスのテキストを、パスフォームを変数として使用しない別のクラスに変更しますか?
あなたの質問は見苦しいですが、ここではdelegate
のシナリオを達成するためのアプローチの1つですが、参考にしてください。
// FORM1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Class1 cls1 = new Class1();
cls1.textChange += Cls1_textChange; ;
cls1.YourFunctionInClass1();
}
private void Cls1_textChange(string str)
{
textBox1.Text = str;
}
}
// CLASS1
public class Class1
{
internal delegate void TextChangeDelegate(string str);
internal event TextChangeDelegate textChange;
public void YourFunctionInClass1()
{
Class2 cls2 = new Class2();
cls2.textChange += Cls2_textChange;
cls2.YourFunctionInClass2();
}
private void Cls2_textChange(string str)
{
textChange(str);
}
}
// CLASS2
public class Class2
{
internal delegate void TextChangeDelegate(string str);
internal event TextChangeDelegate textChange;
public void YourFunctionInClass2()
{
textChange("Hello I am from Class2");
}
}
多くのありがとう、それは私が探しているものです – JimmyN
これを実行しようとしたコードを表示しますか? – TriV
'Form1'だけがテキストボックスにアクセスできるはずです。これを達成するためのさまざまな方法があります。厳密なシナリオに応じて、新しいテキストが設定可能になった時点で発生したイベントを 'class2'が公開するのが最善の方法の1つです。次に、Form1はイベントに登録してテキスト自体を取り出すことができます。このイベントを 'class1'に反映させる必要があるかもしれません。再び、正確なシナリオに依存します(実際には何の文脈も提供していません)。イベントベースのアプローチがどのように機能するかの例については、[my answer here](http://stackoverflow.com/a/29872737)を参照してください。 –