Windowsフォームのソースコード内にヘルパー関数を作成しましたが、正しいフォームのソースコード内の別の場所で変数を参照するにはどうしたらいいですか?同じWindowsフォームの関数間の参照変数
次の例では、myVarはmyFormで宣言され、myTextBoxはデザイナーで描画されます。どちらもエラーとして「非スタティックフィールド、メソッド、またはプロパティ」にオブジェクト参照が必要です。
静的なmyVarを定義するとコードは機能しますが、その値を変更するとどうなりますか?テキストボックスについては、デザイナーファイルで静的に変更してもエラーは修正されません。
(私は他の質問を見ましたが、そこに提案された解決法は私のコードに適合しないようです)。あなたはクラスのインスタンスを渡すことなく、静的メソッドでインスタンス変数をrefernceすることはできません
myForm.cs
namespace myThing
{
public partial class myForm : Form
{
public int myVar;
public myForm()
{
InitializeComponent();
myVar = 0;
}
static void foo(Point checkPoint, List<Vertex> checkList)
{
int myNumber = myForm.myVar;
myForm.myTextBox.Text = "";
//OR
System.Windows.Forms.TextBox.myTextBox.Text = "";
}
my.Form.Designer.cs
namespace myThing
{
partial class myForm
{
//a bunch of stuff goes here
private System.Windows.Forms.PictureBox myPictureBox;
private System.Windows.Forms.TextBox myTextBox;
}
}
staticの代わりにpublicを試しましたか? – jdweng
は現在両方で試用されていますが、動作しません。 – maja
ヘルパーメソッド/関数はstatic宣言されています。静的メソッドは、myVarとしてインスタンス変数にアクセスすることはできません。静的キーワードをfooから削除すればうまくいくはずです。 – Markus