親フォームの値セットを2番目のフォームに渡そうとしています。私は、親フォームにgetの部分を持つプロパティを作成しました。親フォームから子フォームに値を渡しますか?
Form2 secondForm = new Form2(value);
それはすでに出形態であり、私は新しいフォーム私は値を渡したいたびに作成し維持する必要はありません:
私のような何かを行うにはしたくありません。
親フォームの値セットを2番目のフォームに渡そうとしています。私は、親フォームにgetの部分を持つプロパティを作成しました。親フォームから子フォームに値を渡しますか?
Form2 secondForm = new Form2(value);
それはすでに出形態であり、私は新しいフォーム私は値を渡したいたびに作成し維持する必要はありません:
私のような何かを行うにはしたくありません。
親にForm2
をどのように使用するのかはわかりません(frmParent
としましょう)。とにかく次の手順のいずれかを実行できます。
子フォームのプロパティをstaticとして指定し、Form2.frmProperty
を使用してアクセスできます。
プロパティをpublicとして定義し、クラスインスタンスにアクセスすると、インスタンスが存在する限り、そのインスタンスを通じて変数にアクセスできます。
Form2 secondFormInstance = new Form2();
secondFormInstance.frmProperty = 10;
// at some later points
int childValue = secondFormInstance.frmProperty; // take value from that variable
secondFormInstance.frmProperty++; // update the value
また、質問で指定したように使用することもできます。
あなたはここにいくつかの方法があります。
だから、あなたの最初のフォームでゲッターを経由してアクセスすることができます値として
Form2 secondForm = new Form2(yourForm1);
をあなたの最初のフォームからリファレンスを与えます。 yourForm1.MyValue;
これは少し醜いようです。インターフェイスを作成してプロパティを保持し、最初のフォームから実装する方がよいでしょうか。
public interface IValueHolder
{
public int MyValue {get;}
}
public class FirstForm : Form, IValueHolder
{
public int MyValue{get;}
//Do your form stuff
Form2 form = new Form2(this);
}
だからあなたForm2がちょうどインタフェースを取るし、Form1から独立しています。さらに、Form1からアクセスするForm2にプロパティを作成することができます。たとえば、Form1のプロパティが変更された場合は、Form2からも値を設定します。
public class Form2 : Form
{
public int MyValue{get;set;}
}
public class Form1 : Form
{
private int _myValue;
public int MyValue
{
set
{
if (_myValue != value)
{
form2.MyValue = value;
}
}
}
}
少なくとも、イベントを使用することができます。さらに、上記のようにForm1 ReferenceまたはIValueHolderを保持するForm2にPropertyを作成することができます。
これが役に立ちます。
だから、あなたの質問は何ですか? – gretro
もっと説明してコードを表示する必要があります。もちろん、別のフォームに何かを与えたい場合は、単に新しいフォームを作成することはできません。そして、物事を正しく命名してください、Form2とそのような名前は問題を引き起こします。 –
この質問は毎週少なくとも1回は尋ねられますか? Googleとここに例がたくさんあります。 – Badiparmagi