2016-02-28 20 views
1

第一個問題是,在form1頂我:如何在Windows窗體中輕鬆替換另一個具有相同名稱的控件?

ListViewNF lvnf; 

ListViewNFform1類:

class ListViewNF : System.Windows.Forms.ListView 
     { 
      public ListViewNF() 
      { 
       //Activate double buffering 
       this.SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true); 

       //Enable the OnNotifyMessage event so we get a chance to filter out 
       // Windows messages before they get to the form's WndProc 
       this.SetStyle(ControlStyles.EnableNotifyMessage, true); 
      } 

      protected override void OnNotifyMessage(System.Windows.Forms.Message m) 
      { 
       if (m.Msg != 0x14) 
       { 
        base.OnNotifyMessage(m); 
       } 
      } 
     } 

然後在Form1構造我正在做的實例爲lvnf變量集大小,位置並將此控件lvnf添加到form1控件。 然後在我的程序中,我在某些地方使用了lvnf

但現在我想建立一個新UserControl調用它lvnf所以當我拖動UserControl從工具箱中form1設計師將取代我創建的lvnf

第一個問題是,一旦我刪除該行:

ListViewNF lvnf; 

我得到許多錯誤,不能看到Form1設計我得到一個錯誤,因爲lvnf不存在。

如果我不刪除它並拖動新的UserControl它會給新的控件另一個名稱,我希望它是lvnf。我不想在我的運行時代碼中改變任何與lvnf相關的設計中的控件。

這是UserControl的代碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.Data; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Pop3_Emails 
{ 
    public partial class ListViewNF : UserControl 
    { 
     public ListViewNF() 
     { 
      InitializeComponent();   
     } 
    } 
} 

我應該做lvnf的所有事件將它們移動到UserControl代碼?或者全部留在form1

主要問題是如何使用UserControl作爲lvnf。 另外我需要使用類ListViewNF中的代碼。

真是一團糟。一般來說,我想要做的是在form1設計器中控制lvnfListViewNF,而不是運行時代碼中的控件。

  • 回答

    1
    1. 將新UserControl到形式,以不同的名稱(x例如)重命名lvnfx,要求Visual Studio來更新所有引用。忽略名稱已經存在的警告,並且項目不會編譯。
    2. 刪除ListViewNF x聲明(現在項目應該再次編譯)。
    3. 重命名x返回lvnf,同時更新所有引用。
    相關問題