2012-09-04 5 views
0

내가 VS 2012 년과 같은 코드가 있습니다경우 C# VS에서 어떤 결과 문 2012

private void Form1_Load(object sender, EventArgs e) 
    { 
     if (Properties.Settings.Default["Database"] != null) 
     { 
      MessageBox.Show("We landed on spot 1"); 
     } 
     else 
     { 
      MessageBox.Show("We landed on spot 2"); 
     } 
    } 

내가 조건 구문을 엉망 확신을하지만, 내가 기대하는 이들 중 하나가 것 일어납니다 :

  1. 컴파일러는 오류/프로젝트 실행 실패에 대해 경고합니다.
  2. 첫 번째 메시지가 표시됩니다.
  3. 두 번째 메시지가 표시됩니다.

그러나 둘 중 어느 것도 실제로 발생하지 않습니다. 나는 이것을 한시간 꼼짝 않고 바라 보았고 내가 찾을 수있는 자원은 꽤 슬림합니다. 경험이있는 사람이라면 저에게 실제로 어떤 일이 일어 났는지 설명 할 수 있습니까?

편집 :이 기본적으로 윈도우 64에서 VS 디버거에서 터지는 고치지 않을 것 (wontfix)의 버그가 발견 감사 JMK's link에. 응용 프로그램이 디버거 외부에서 실행되면 오류가 발생합니다.

+0

_is_ 실제로 어떤 일이 벌어지고 있습니까? – Oded

+5

디버그 포인트를 넣고'Form1_Load'에 들어가는 지 확인하십시오 – Habib

+2

MessageBox.Show ("우리는 스팟 0에 착륙했습니다")를 시도하십시오; Form1_Load 이벤트가 발생하는 것을 증명하는 if 문 앞에 – DaveHogan

답변

3

자동으로 오류가 발생합니다.

try 
    { 
     if (Properties.Settings.Default["Database"] != null) 
     { 
      MessageBox.Show("We landed on spot 1"); 
     } 
     else 
     { 
      MessageBox.Show("We landed on spot 2"); 
     } 
    } 
    catch (Exception ee) 
    { 
     MessageBox.Show(ee.Message); 
    } 

는 "을 (를) 찾을 수 없습니다 설정 특성 '데이터베이스'"

+0

고마워, 수동으로 잡기에 대해 생각해 봤어야 :) – user1612992

+0

나는 그것을 시도하고 거물 같다, 그래서, 그것을 거기에 추가했습니다 :) – BugFinder

0

시도가 Propably Properties

if (WindowsFormsApplication2.Properties.Settings.Default.Database != null) 
0

예외 전에 프로젝트 네임 스페이스를 추가 슬로우과에 의해 발견되지와 함께 다시 온다 디버거. 이 문제는 64 비트 Windows 버전의 Windows Forms 프로젝트에서 발생하며 일반적으로 .NET에서는 문제가 아니지만 일반적으로 Windows에서는 발생하지 않습니다. 여기

자세한 내용 : Visual Studio does not break at exceptions in Form_Load Event

STRG + ALT + E을 눌러보십시오와 "공용 언어 런타임 예외"를 "슬로우"확인란을 표시합니다. 이제는 디버거가 Form_Load()에서 예외가 발생합니다.

로드맵 사용을 피하는 것이 좋습니다.

대부분의 내 양식은 대화 상자이므로 ShowDialog() 메서드를 그림자 처리하고 Init() 함수를 호출합니다.

public class Form1 
{ 

    public new DialogResult ShowDialog() 
    { 
     Init(); 
     return base.ShowDialog(); 
    } 

    public new DialogResult ShowDialog(IWin32Window owner) 
    { 
     Init(); 
     return base.ShowDialog(owner); 
    } 


    public void Init() 
    { 
     // code goes here 
    } 
}