none
Visual studio 2008 使用Debug 模式,錯誤發生卻沒有出現例外狀況 RRS feed

  • 問題

  • 我的環境是Win7進階版+Visual studio 2008,專案是C#的Windows Form
    情況是這樣的:在Form 拖入一個ComboBox元件,命名box1但是不給他任何item也就是這個ComboBox是空的
    當我在form.Load事件裡面加入一行 box1.items.SelectedIndex = 5;此時因該會發生錯誤,因為並沒有5這個索引(ComboBox是空的)
    照往常我的IDE跑到這裡的時候會出現例外,然後跳出一個例外視窗告訴我這行有問題,但是今天我不知道幹了什麼好事情,
    這個例外就不會出現了,反而直接出現Windows Form(專案只有一個comboBox+一行程式碼,所以這行之後就是顯示自身的form了)
    ,我用中斷點去看,他並不會在那行中斷,但是前一行code卻是有執行的,所以我在想是不是IDE的環境被改掉了?如果是的話
    要怎麼樣讓他復原?謝謝各位。以下是程式碼簡介
    (註:Release mode會出現一個視窗說錯誤,但是Debug mode卻跳過這個錯誤,直接顯示Form)

    private void mainForm_Load(object sender, EventArgs e)
    {
                int a=0;//中斷點設定在此可以順利執行
                box1.SelectedIndex = 5;//無法執行到這行,且沒有出現例外狀況的小視窗
    //之後Form就出現了............
     }

    2010年3月17日 上午 08:35

解答

所有回覆

  • 問一下, 你是用 X64 版本的Windows 7嗎 ?
    補充一下, bauann大有為這個事寫過一篇文
    http://www.dotblogs.com.tw/bauann/archive/2010/01/22/13212.aspx

    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年3月17日 上午 09:05
    版主
  • 我也補充一下我的實驗結果: http://blog.darkthread.net/blogs/darkthreadtw/archive/2010/01/12/vs2008-x64-unhandled-exception.aspx
    最近還發現,同樣的問題在Form_Closed時也會發生
    2010年3月17日 上午 10:25
  • 在 box1.SelectIndex 前面加上
    IntPtr p = box1.Handle

    這個狀況是因為 .Net 物件建立的順序問題,這篇是 VB2005 @ Win32 下的,這個網誌還有好幾篇有同樣的狀況,需要先呼叫 Control.Handle :
    [VB2005] ListView 初始化與 ItemChecked 事件


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年3月17日 下午 12:35
  • 謝謝各位前輩@@
    果然就是妳們說的問題@@
    的確是在x64的windows7上跑VS2008
    各位前輩提供的文章都很有用哈~受益不淺~

    不過我剛剛試了一下
    IntPtr p = box1.Handle;
    box1.SelectedIndex = 5;
    好像不成功,不知道是我哪弄錯了。@@

    不過我最後解決方法是把code搬到Form的建構是裡面且在InitializeComponent();之後。
    謝謝各位高人,有新的解決方法請在告訴我~謝謝!
    2010年3月18日 上午 04:19