我是一個新手,我遇到了一些問題。 谷歌並沒有像我想的那樣幫助我,因爲我非常討厭要求別人花時間去尋求某些東西,但是因爲我在這裏呆了幾個小時,所以我會問。NullReferenceException - 與StackPanel,TextBox作爲OriginalSource,TextBox上的自定義MouseLeftButtonDown_Event的問題
首先,我有一個完美工作的xaml.codesource。我已經吞沒了StackPanel中的30個TextBoxes,命名爲StackPanel'ScoreList'並添加了MouseLeftButtonDown_Event {ScoreList.AddHandler(FrameworkElement.MouseLeftButtonDownEvent,new MouseButtonEventHandler(ScoreList_Click),true); },這樣一旦我點擊一個文本框,它就會調用該事件。
一切工作,儘可能多的文本框(雖然你可能想搖頭,我的選擇使用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;
}
}
我目前有以下幾個問題:
當我嘗試籤文本框X爲空,這在我拋出一個NullReferenceException。即使沒有檢查,它也會拋出一個NullReferenceException異常。
我正在尋找想法或如何完全鎖定一個文本框一旦點擊。我的意思是,因爲我的TextBoxes上有一個Click_Event,那麼第二次點擊不會再次調用該事件。 (取消訂閱不會工作,因爲原因,不,真的原因,因爲StackPanel綁定到事件,我不能取消訂閱整個事件,當我想要的是'取消訂閱StackPanel內的單個文本框'
對不起,打擾你們。我可能已經給太多心思在裏面,因爲我想從像80行代碼很大程度上減少我的代碼5與我的想法。
使用中斷點並觀察所有變量。這是常見的調試練習,這將有助於解決這個問題。 –
這個異常發生了什麼?你是否使用了一個調試器,並檢查是否有任何變量在發生異常時爲空。 – Joe
如果你閱讀你的代碼,當x爲空時會發生什麼?它會轉到第二個if語句並嘗試訪問'x.Text' - 但x爲null,因此您會收到nullreferenceexception。你也在描述其他問題。你可以試着把它保留在一個問題上嗎?我不確定這個問題如何得到合理解答。 – Default