我有兩個自定義列表框類時:MethodNotFoundException添加用戶控件爲另一種形式
public class MyListBox : ListBox
public class MyCheckedListBox : ListBox
他們周圍的WinForms包裝System.Windows.Forms.ListBox
控制增添了幾分實施和造型等
我加以下代碼分別爲了在必要時移除垂直滾動條:
private const int WS_VSCROLL = 0x00200000;
private bool verticalScrollbar = true;
[DefaultValue(true)]
public bool VerticalScrollbar
{
get { return this.verticalScrollbar; }
set
{
if (this.verticalScrollbar != value)
{
this.verticalScrollbar = value;
this.RecreateHandle();
}
}
}
protected override System.Windows.Forms.CreateParams CreateParams
{
get
{
System.Windows.Forms.CreateParams parms = base.CreateParams;
if (!this.verticalScrollbar)
parms.Style &= ~WS_VSCROLL;
return parms;
}
}
我將其中的一個添加到現有的用戶控件ol ProfileGeneralPanel
並且它們按預期工作,默認情況下顯示滾動條,將VerticalScrollbar
屬性設置爲false會將其刪除。雖然現在有必要在多個地方使用這種安排,所以我將這種結構提取到一個獨立的新用戶控件PrivilegesListView
。這個新控件在表中有一個MyCheckedListBox
和兩個MyListBox
。所有三個都有VerticalScrollbar
設置爲false
。目前爲止,設計師都能正確顯示所有內容。
然而,當我試圖從工具箱這個控件拖到另一個用戶控件,將拋出一個異常,說明它無法找到方法:MyCheckedListBox.set_VerticalScrollbar(Boolean)
問題的方法顯然是一個屬性生成的方法。我已經嘗試了所有常見的,清理和重建,重新開始視覺工作室。絕望之餘,我還檢查了建築時產生的IL,並且MyCheckedListBox
確實已經定義了該方法。任何想法,爲什麼它無法找到它?
注意注意控制器的設計者本身每次都打開罰款,它只有當它被添加到另一個表單時纔有問題。
注意,只有當VerticalScrollbar
設置爲false,無論是在設計器生成的代碼PrivilegesListView
或手寫在構造函數本身出現問題。
注:不幸的是,在這個階段,它不是可以使用像DataGridView
代替列表框其他控件...
雖然有趣的帖子,我還沒有手動添加任何東西到工具箱。兩個列表框類已經存在,他們只是用給定的代碼更新,並且新的用戶控件自動出現在那裏。 –
這並沒有留下太多。不知何故,它正在某個地方找到該程序集的舊副本。您可以使用fuslogvw.exe並記錄所有綁定以獲取洞察。 –
你的確是正確的,它是在我們衆多的輸出文件夾之一中完成裝配的舊副本。如果你想爲你的答案增加一些這樣的話,那麼我可以繼續接受它。 :) –