2012-09-04 88 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. 第二消息。

但是没有这些实际情况。我一直盯着这里一个小时,我能找到的资源非常渺茫。 如果有经验的人可以解释我在这里发生了什么?

编辑: 感谢JMK's link我发现这基本上是一个wontfix错误的Windows 64下VS调试器弹出。如果应用程序在调试器之外运行,则会触发错误。

+0

什么_is_实际发生的? – Oded

+5

把一个调试点,看看你是否进入'Form1_Load' – Habib

+2

尝试一个MessageBox.Show(“我们登陆点0”);在if语句之前证明Form1_Load事件正在触发 – 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

我试过了,就像wtf,所以,添加它,然后你去:) – BugFinder

0

尝试前Properties

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

Propably异常增加你的项目的命名空间被抛出,而不是由注意到调试器。 这发生在64位Windows版本的Windows窗体项目上(并且不是特定于.NET的行为,而是一般Windows的行为)。

更多细节在这里:Visual Studio does not break at exceptions in Form_Load Event

尝试按STRG + ALT + E并注明“时抛出”为“公共语言运行库异常”复选框。 现在调试器将在Form_Load()中的任何异常中中断()

因为我知道我的解决方法是完全避免使用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 
    } 
}