2012-09-12 11 views
13

我寫了一個小的System.Windows.Forms.UserControl,稱之爲userControl1,這似乎是以我想要的方式工作。我的用戶控件每當我把它添加到表單時崩潰Visual Studio

從Visual Studio 2010的Designer中,我可以從工具欄中拖動userControl1並將它放在Windows窗體上,我將調用testForm1。我可以連線userControl1,它可以正常工作。

但是,userControl1的目的是爲了能夠在另一個UserControl中使用它,我們將其稱爲userControl2

在Visual Studio 2010的設計中,如果我從工具欄拖到userControl1其拖放到userControl2時,Visual Studio 2010將沒有比它正在重新啓動其他消息崩潰。

screenshot

在此同時,應用程序錯誤記錄在事件查看器事件ID 1000:

Faulting application name: devenv.exe, version: 10.0.40219.1, time stamp: 0x4d5f2a73 
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000 
Exception code: 0xc00000fd 
Fault offset: 0x0965f816 
Faulting process id: 0x1580 
Faulting application start time: 0x01cd90f84338e443 
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 
Faulting module path: unknown 
Report Id: 49ddcedf-fcf8-11e1-8016-00248103a942 

我怎麼可以去嘗試調試這個錯誤?我應該看看userControl1userControl2

幾個注:

  • 1)I也可從工具欄拖動userControl2testForm1,它工作(無論是在VS2010設計器,當我運行測試程序即顯示器)細。

  • 2)我已經成功地進入了的userControl2的設計師,我聲明並設置所有值的userControl1,但在運行時userControl1不會在testForm1顯示。如果我從VS2010 Designer的userControl2屬性窗口中選擇userControl1,Visual Studio將會崩潰。

  • 3)我很高興發佈代碼,如果有幫助。您希望代碼爲userControl1還是userControl2?雖然這兩個控件很小,仍然有大量的代碼(尤其是因爲這個錯誤在設計可能發生的,所以我必須張貼,太。

+4

運行Visual Studio的兩個實例,在兩個實例中打開該項目,並在其中一個實例中使用*** Attach to process ...***選項來調試它(* devenv.exe *進程)。您應該能夠看到異常情況。 –

+3

UserControl中的一些代碼也在設計時運行。該代碼有一個錯誤,它會觸發StackOverflowException。一個相當致命的錯誤,也會導致VS下降。尋找遞歸屬性setters/getters,如果找不到它,請註釋掉它。 –

+0

你能發表一個代碼示例嗎? – bryanbcook

回答

16

看來這有助於解決問題,所以我將它作爲答案發布。

爲了在Visual Studio設計器中使用時調試控件,運行Visual stu的兩個實例dio並在兩種情況下打開您的項目。然後,在其中一個實例中使用附加到進程...選項並附加到第二個實例以進行調試(devenv.exe進程)。這樣,你應該能夠看到什麼是例外。

+1

請注意,Visual Studio可能不是devenv.exe;對於我來說,運行Visual Studio 2012 Express for Desktop,如果我記得正確的話,那是WDExpress.exe。 – ekolis

+1

感謝它今天救了我 –

+0

這種方法比我預想的要容易得多。我的問題原來是一個引用從嵌套的UserControl的Load事件中調用的第三方控件的版本控制問題。 – Giles

2

那裏的構造可能的東西你的控件試圖訪問另一些不可用的東西,或者創建一個IDE無法捕獲的異常(StackOverflow,OutOfMemory等)

+1

如果Lukasz回來並發表評論作爲答案,我會將其標記爲解決方案。如果他不這樣做,歡迎您通過添加他的評論來更新您的文章,我會將您的評論標記爲答案。 – jp2code

相關問題