2010-05-14 142 views
1

最好接受我對這個問題的錯誤。我搞砸了這就是爲什麼我有這個問題。對不起,打擾你的人......誰能告訴我這部分代碼有什麼問題

string name = ((DateTimePicker)sender).Name.ToString(); 
     name = name.Substring(0, name.Length - 1); 
     name = name + "4"; 
     TimeSpan duration = new TimeSpan(); 
     duration = ((DateTimePicker)sender).Value - ((DateTimePicker)panel2.Controls[name]).Value; 
     name = name.Substring(0, name.Length - 1); 
     name = name + "6"; 
     ((MaskedTextBox)panel2.Controls[name]).Text = duration.ToString(); 

在執行它給了我對象引用未設置到對象 類似的功能,例如用在其他地方,但我不能找出我要在這裏重新初始化:$

alt text http://www.freeimagehosting.net/uploads/735eefb5db.jpg

dateTimePicker的鑄件精細 我必須得到一個名字爲datetiempicker識別之前,它是在我的形式 行和選擇器來計算他們之間的分歧,然後打印塔t在控件的maskedtext框中的差別,這個控件的名稱使用兩個datetimepickers的名字,但是當我在錯誤行中訪問控件時,我得到這個消息。

+2

你需要更具體一點,究竟是哪一行引發異常? – James 2010-05-14 13:44:33

+0

你在做什麼名字?在不知道細節的情況下,我們不可能說出來。只需連接調試器,然後逐步檢索控件的每一行。其中一個是空的。 – Nix 2010-05-14 13:45:37

+0

就像Nix說的那樣,你會發現錯誤...它可能是panel2.Controls [name]或panel2本身...嗯...也許發件人爲空? – w4ik 2010-05-14 13:48:31

回答

4

很多...

使用的String.Format(),使這個更清晰一點。不要爲此使用StringBuilder是可以的,但真正很難理解你正在嘗試做什麼。

此外,諸如此類的

(DateTimePicker)sender 

不應重複。施放一次,然後重新使用該施放對象。

DateTimePicker _castObject = (DateTimePicker)sender; 

obj not ref error可能在任何這些對象上。除非您逐步完成,或者添加防禦性陳述(如下所示),否則您將有一段時間計算出來。

if (sender == null) 
{ throw new ArgumentNullException("sender", "sender is null");} 

如果這是在你的窗體上的標準的事件處理程序發生,它會是這個樣子(原諒VB,我不能做從內存C#了)。

Protected Function btnOK_Click(sender as Object, e as EventArgs) Handles btnOK.Click 
'your code' 
End Function 

如果您看到類似的內容,那麼沒有理由在表單上投射任何對象。只需通過其控制名稱(btnOK,txtMaskedTextBox等)訪問它即可。

你似乎正在以一種完全錯誤的方式去做某件事。也許你應該從解釋你試圖解決的實際問題開始,而不是這個特定的例外。參見「thin metal ruler」。

+0

你可以幫助更多關於我應該使用鑄造一次......但你不認爲這會爲此做一個單獨的對象,我將無法訪問我的表單上的對象 – Mobin 2010-05-14 13:57:43

+0

您正在使用發件人3x並將其轉換爲3x。這會導致額外的工作。投它一次,並使用鑄造結果。你是什​​麼意思「不能訪問我的表單上的對象」?也許你應該發佈更多的方法,以便我們可以確切地看到你想要完成的工作。 – StingyJack 2010-05-14 14:35:58

+0

我的意思是,如果名爲MaskedTextBox1的控件位於您的窗體上,並且您將其投射並保存在另一個對象中,則無法從該Castted對象訪問MaskedTextBox1。我試過你說的,但是我必須重新計算才能得到我的控制MaskedTextBox1試試看,你會明白的。或者你發現如何引用那個被鑄造的物體,讓我知道 – Mobin 2010-05-14 15:36:38

0

檢查您是否正確形成了「名稱」,並存在具有該名稱的控件。那個panel2不是null。

+0

雅我已經這樣做了...這就是爲什麼我花很多時間做這些檢查之前問這樣一個愚蠢的問題,但那是什麼讓我打擾...確認我會說如果panel2不存在,那麼行7不會工作在我給出的代碼中,是的,我已經檢查過'name'是否存在 – Mobin 2010-05-14 14:02:54

相關問題