私はフィールドがユーザーによって満たされているかどうかを判断するために10msごとに実行されるタイマーを実装しようとしています。基本的に、テキストボックス(最大10個)が塗りつぶされている場合、ボタンが有効になります。入力が完了したら、入力を削除すると、タイマーがそのボタンを決定して無効にします。それは次のように見ることができます。タイマーをテキストボックスの配列にキャストできません。 Winform
private: System::Void StartBtn_Tick(System::Object^ sender, System::EventArgs^ e) {
int count = 0;
array < TextBox^>^textbox = { vPeak1, vPeak2, vPeak3, vPeak4, vPeak5, vPeak6, vPeak7, vPeak8, vPeak9, vPeak10 };
TextBox^current = (TextBox ^)sender;
for (int i = 0; i < 10; i++) {
if (textbox[i]->Text != L"") count++;
else count--;
}
このコードは、単一のテキストボックスの作品「カウントが」の値がある4.しかし、私はテキストボックスの配列を実装した後、プログラムはラインでの例外を除いて、すぐにクラッシュします0
「System.Windows.Forms.TextBox 『『『とタイプする』 System.Windows.Forms.Timer』タイプのオブジェクトをキャストすることができません』」あなたが投稿したコードによる
このコードはどこに正確に実装されていますか?あなたは文脈からコードを投稿しました。 「送信者」はどこから来たのですか? –
@KenWhiteもう少し文脈を追加しました。これは、TimerのTick動作で発生しています。送信者は、他の場所で使用されているテキストボックス内のテキストです。 –
Timer's Tickハンドラで起こっている場合、 'sender'はTextBoxではなくTimerです。タイマーをTextBoxにキャストすることはできません。 'sender'は、イベントを生成したコードを呼び出す' Object'です。これは 'Timer'です。 –