簡體   English   中英

在C#VS 2012中沒有結果的if語句

[英]if statement with no result in C# VS 2012

我在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的鏈接,我發現這基本上是Windows x64下VS調試器中彈出的wintfix錯誤。 如果應用程序在調試器外部運行,則會引發錯誤。

它默默地出錯。

    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);
    }

返回“找不到設置屬性“數據庫””

嘗試在Properties之前添加項目名稱空間

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

可能會引發異常,調試器不會注意到該異常。 對於64位Windows版本上的Windows Forms項目,會發生這種情況(不是特定於.NET的行為,而是Windows的一般行為)。

此處有更多詳細信息: Visual Studio不會在Form_Load事件中發生異常時中斷

嘗試按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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM