form.csファイルにはメモとタイマーの2つのボタンがあります。私の質問は次のとおりです。別のcsファイルからタイマーやメモにアクセスするにはどうすればいいですか?C言語で別のcsファイルからフォームオブジェクトにアクセスする方法
私はオブジェクトをパブリックにしようとしましたが、動作しませんでした。ソースまたはプロジェクトを与えてください。私は誤っている箇所を確認できます。
ありがとうございます!
form.csファイルにはメモとタイマーの2つのボタンがあります。私の質問は次のとおりです。別のcsファイルからタイマーやメモにアクセスするにはどうすればいいですか?C言語で別のcsファイルからフォームオブジェクトにアクセスする方法
私はオブジェクトをパブリックにしようとしましたが、動作しませんでした。ソースまたはプロジェクトを与えてください。私は誤っている箇所を確認できます。
ありがとうございます!
デザイナーであなたのボタンを選択し、そのプロパティに移動し、 "Modifiers"プロパティをPrivateからPublicに変更します。
次に、あなたは、このように、何かを別のクラスからのそれへのアクセスを取得することができます:
public static class Test
{
public static void DisalbeMyButton()
{
var form = Form.ActiveForm as Form1;
if (form != null)
{
form.MyButton.Enabled = false;
}
}
}
注:それは間違いなく、私はいつでも心配
新しいStackOverflowException()をスローします。 ;) –
http://pastebin.com/m183c1bcf エラーが発生した場合、エラーが発生した場所をマークしました。動作しません。 –
あなたはあなたの答えを編集しました、私は試みました。私は "Form1.MyButton"を書き込もうとすると、それはそれを認識しません。 –
:-)良いデザインのためのパターンだけではなく例だと私は誰かが "別の.csファイル"または "別の.vbファイル"について話しているのを聞いています。多くの場合(必ずしもそうではないが)、少なくともOOプログラミングのプログラミングの理解の欠如を示している。ファイルはにありますか? 1つのクラス?二?
他のファイルからこれらのオブジェクトにアクセスしようとしていない場合は、クラスのメソッドから、または可能であればVBのモジュールからアクセスしようとしています。
あなたの質問に対する答えは、あなたがこれらのものにアクセスしようとしているクラスとメソッドの性質と、それらにアクセスする理由によって異なります。
この情報を含めるように質問を編集すると、フォームクラス自体以外のクラスでフォームのこれらの非公開部分にアクセスすべきではないという回答が表示されます。
+1私は問題が単にプロパティの可視性よりも深くなると思う。 – tvanfosson
私はJohn Saundersに同意しますが、あなたが間違っているかもしれない1つのことは、あなたが公開修飾子ですべてのものにアクセスできると仮定すると、そのフォームのインスタンスを持たないということです。例えば、これは、あなたがそれを行うだろうか
されています:
Form1 myForm = new Form1;
string theButtonTextIAmLookingFor = myForm.MyButton.Text;
私はあなたがこのように、それは静的だと同じようにアクセスしようとすることができると仮定しています:
string theButtonTextIAmLookingFor = Form1.MyButton.Text;
だけで何かをあなたがチェックしたいかもしれません。
直感的なオプションは、ここで制御フィールド公共 は、この問題を解決するために非常に良い解決策であることを確認するために、単に..です
すでにProgram.csの中でインスタンス化Formオブジェクトは、それを除いて、あり参照がない。簡単な編集を使用すると、
public static Form1 formInstance;
ようにそれを宣言し、
Program.formInstance.MyFunction(params);
私はこの方法が気に入っており、トップレベルのフォームを常に利用可能にしています。私は間違ったフォームをターゲットにしているActiveFormに問題がありました(私のコードの観点からは間違っています、すべての従来のロジックに従ってください)。 – Khainestar
を使用
に
を回すことができ、同じプロジェクト内の他のCSファイルですか? –