2011-12-15 73 views
2

我在Visual Studio 2010中(從2008年轉換)項目後,我已經創建了一個用戶控制,就像這樣:Visual Studio的擋在設計模式下擴展用戶控制

namespace Common.Controls 
{ 
    public partial class Panel_BaseMap : UserControl 
    { 
     public Panel_BaseMap() 
     { 
      //Some properties initialization here, just like = new X(); 
      InitializeComponent(); 
     } 

     private void BaseMapPanel_Load(object sender, EventArgs e) { 
      //Here, a new Thread is initialized and started. 
     } 
    } 
} 

我不有任何問題,它在設計模式下打開沒有任何問題。但是,我已經創建了延伸到第一個,這樣一個新的用戶控件:

using Common.Controls; 
namespace BC.controls 
{ 
    public partial class MapPanel : Panel_BaseMap 
    { 
     public MapPanel() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

那麼,在非常時刻,我嘗試打開設計模式,這種新的控制,Visual Studio中被完全堵塞,我有強制它關閉,因爲它沒有響應。我嘗試了很多東西,例如:

public MapPanel() 
{ 
    if (!this.DesignMode) 
     InitializeComponent(); 
} 

仍然阻塞。我已經打開了Visual Studio的第二個實例,然後在第一個「調試 - >附加到進程 - > devenv」,並且我在第二個實例上的Load方法和兩個構造函數上都放置了一個斷點。結果是:兩個實例完全阻塞。

任何人都可以幫助我嗎?

非常感謝您提前!

+0

使用DesignMode屬性可防止代碼在設計模式下執行。例如,你絕對不想啓動該線程。 – 2011-12-15 10:56:33

回答

0

好的我發現了這個問題。

某些代碼是由設計人員執行的,並且該代碼使應用程序崩潰。它在try-catch內部,並且在catch中我用一個試圖用這個加載一個帶標識文件的方法記錄錯誤:Directory.GetFiles(Application.StartupPath,「* .xml」)。問題是Application.StartupPath不是我的應用程序路徑,而是「C:\ Program Files \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ Microsoft.Data.ConnectionUI.xml」。所以,當我試圖解密它時,它拋出了另一個異常,這是用相同的方法記錄的......所以無限循環!