2010-05-14 7 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 자신의 차이를 다음 인쇄 그쪽을 계산하기 위해 그 전에 내 양식 에서에서의 행과 피커를 식별하는 이름을 얻을 수 있습니다 괜찮 두 개의 datetimepickers의 이름을 사용하여 이름을 만드는 컨트롤의 마스크 된 텍스트 상자에서 t 차이가 있지만 오류 줄의 컨트롤에 액세스 할 때이 메시지가 나타납니다.

+2

예외를 throw하는 행은 정확히 무엇입니까? – James

+0

이름으로 무엇을하고 있습니까? 세부 사항을 모른 채 말할 수는 없습니다. 디버거를 연결하고 컨트롤을 검색하는 각 행 위로 이동하십시오. 그들 중 하나는 null입니다. – Nix

+0

Nix가 말했듯이, 줄을 넘으면 오류를 발견 할 수 있습니다 ... 그것은 panel2.Controls [이름] 또는 panel2 자체입니다 ... 음 ... 어쩌면 보낸 사람 null ??? – w4ik

답변

4

많이 ...

좀 더 명확하게하기 위해 String.Format()을 사용하십시오. StringBuilder를 사용하지 않아도되지만, 실제로하려고하는 것을 이해하기 란 정말 어렵습니다.

또한,

(DateTimePicker)sender 

같은 일이 반복되어서는 안된다. 한 번 캐스팅하고 캐스팅 된 오브젝트를 다시 사용합니다.

DateTimePicker _castObject = (DateTimePicker)sender; 

obj not ref 오류가 이러한 개체에있을 수 있습니다. 당신이 단계를 밟거나 (아래) 방어 진술을 추가하지 않는 한, 당신은 그것을 알아내는 시간을 가지고있을 것입니다. 이 양식의 표준 이벤트 핸들러에서 일어나는 경우

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

+0

보낸 사람 3 배 및 3 배 캐스팅. 이로 인해 추가 작업이 완료됩니다. 한 번 캐스팅하고 캐스팅 된 결과를 사용합니다. "내 양식에있는 개체에 액세스 할 수 없습니까?"라는 것은 무엇을 의미합니까? 어쩌면 더 많은 방법을 게시하여 성취하고자하는 것을 정확하게 볼 수 있습니다. – StingyJack

+0

MaskedTextBox1이라는 컨트롤이 폼에 있고이를 캐스팅하고 다른 개체에 저장하면 그 캐스팅 된 개체에서 MaskedTextBox1에 액세스 할 수 없다는 것을 의미했습니다. 나는 당신이 말한 것을 시도했다. 그러나 나는 나의 컨트롤 MaskedTextBox1을 이해하기 위해 재 계산해야한다. 또는 casted 객체를 참조하는 방법을 찾으십시오. – Mobin

0

"이름"이 올바르게 구성되었고 해당 이름의 컨트롤이 있는지 확인하십시오. 그리고 그 panel2는 null이 아닙니다.

+0

나중에 내가 그 ... 그게 왜 그런 어리석은 질문을 요구하기 전에 그 수표를하고 많은 시간을 보내고 thats 내가 귀찮게 만드는 ... 내가 panel2가 존재하지 않으면 다음 라인 7 일하지 않을 것이라고 말할 수 있는지 확인하기 위해 내 주어진 코드에서 네, 'name'이 존재하는지 확인했습니다. – Mobin

관련 문제