前の質問で、件名のタイトルのエラーメッセージについて尋ねましたが、答えはほとんど盲目的に明白でした。
ただし、その「煮詰められた」例は、それほど希釈されていないコードからのものであり、元の質問が新しいブロスに再び表示されます。
たくさんの「面白い」コメントに心を開いているのではないかと思いますが、ちょっと...ばかげた質問などはなく、ばかげたプログラマーだけです!」
とにかく、これは元のコードのほんの少しゆでたバージョンです:
public partial class Form1 : Form
{
public static Form1 mForm = new Form1();
// define textbox parameter structure
struct ParmStruct
{
public TextBox sTextBoxName;
public double dMinValue;
public double dMaxValue;
public ParmStruct(TextBox sTextBoxName, double dMinValue, double dMaxValue)
{
this.sTextBoxName = sTextBoxName;
this.dMinValue = dMinValue;
this.dMaxValue = dMaxValue;
}
}
// Create list of Parameters (name, min, max)
static ParmStruct[] ParmList = new ParmStruct[]
{
new ParmStruct { sTextBoxName = mForm.textBox1, dMinValue = -99, dMaxValue = 99 },
new ParmStruct { sTextBoxName = textBox2, dMinValue = 0, dMaxValue = 100 }
};
public Form1()
{
InitializeComponent();
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
TextBox tb1;
tb1 = mForm.textBox1;
tb1 = textBox2;
double x = ParmList[0].dMaxValue;
}
}
ParmList初期化の2行目は、(sTextBoxName = textBox2)
作成しない限りコンパイルされません。sTextBoxName = mForm.textBox2.
ただし、行tb1 = textBox2
はコンパイルされ、mFormは必要ありません。プレフィックス。
これは、元々混乱を引き起こした実際のケースです(そして、私に関する限り、今でもそうです)。
コンパイラー(VS 2010)が、ある場合にはそれを理解できるが、他の場合には理解できない理由はよくわかりません。
ああ...そしてコードはコンパイルされたときに機能します。:)