私はルーキーで、いくつか問題があります。 私は何かのために他の人に尋ねたり、時間を取ったりすることを真剣に嫌うので、私が欲しかったほどの助けはしていませんが、私は数時間ここで立ち往生しています。NullReferenceException - OriginalSourceとしてのStackPanel、TextBoxの問題、TextBoxのカスタムMouseLeftButtonDown_Event
まず、完全に動作するxaml.codesourceがあります。 私は、StackPanelの「ScoreList」という名前のStackPanelに約30のTextBoxを埋め込み、MouseLeftButtonDown_Event {ScoreList.AddHandler(FrameworkElement.MouseLeftButtonDownEvent、new MouseButtonEventHandler(ScoreList_Click)、true)を追加しました。 }をクリックしてTextBoxをクリックすると、そのイベントが呼び出されます。
すべては、TextBoxesと同じくらい機能します(ただし、ボタンの代わりにTextBoxesを使用することについて頭を振りたいかもしれませんが)重要ではないRandomListに応じてさまざまなスコアを表示します。イベントScoreList_Clickで今
...private void ScoreList_Click(object sender, MouseButtonEventArgs e)
{
TextBox x = e.OriginalSource as TextBox;
if (x != null)
{
MessageBox.Show("Don't try this at home Kiddo");
}
if (x.Text == "1" || x.Text == "2" || x.Text == "3" || x.Text == "4")
{
x.Text = "10";
x.IsEnabled = false;
}
}
私は現在、問題を次ています
私はnullをテキストボックスxをチェックしてみてください、それは私にとNullReferenceExceptionをスローします。チェックをしなくても、NullReferenceExceptionがスローされます。
私はアイデアや、一度クリックしたTextBoxを完全にロックアウトする方法を探しています。私の意味は、TextBoxにClick_Eventがあるので、2回目のClickはイベントを再び呼び出さないということです。 StackPanelはイベントにバインドされているので、「StackPanel内の1つのTextBoxの購読を拒否」したいときは、イベント全体を購読解除することはできません。
君たちの手を煩わせるため
申し訳ありません。私は私のアイデアを5に80行のコードなどから多額の私のコードを減らしたいと、それにあまりにも多くの考えを与えている場合があります。
は
すべての変数を参照してください。これはこれを修正するのに役立つ共通のデバッグ方法です。 –
例外は何行発生しますか?デバッガを使用して、例外が発生したときに変数のいずれかがnullであるかどうかを確認しましたか。 – Joe
コードを読んだ場合、xがnullのときはどうなりますか? 2番目のif文に行き、 'x.Text'にアクセスしようとしますが、xはnullなので、null参照例外を取得します。他の問題についても説明しています。あなたは代わりに1つの質問にそれを維持しようとすることができますか?私はこの質問がどのように合理的に答えられるかはわかりません。 – Default