VS 2017 Designer:未找到方法(静态方法)

时间:2018-03-31 12:39:36

标签: c# winforms user-controls visual-studio-2017 visual-studio-designer

我有一个包含用户控件的Windows窗体(每个窗口都在不同的程序集中定义)。该控件调用工厂方法(在另一个程序集中定义)来创建DataGridView CheckBox列:

datagridview.Columns.Add(DataGridViewUtilities.CreateCheckBoxColumn("Selected", false));

代码编译并运行正常,可以在Visual Studio 2017 Designer中打开控件。

但是,如果我尝试在VS 2017 Designer中打开包含表单,我会收到以下错误:

  

找不到方法:'System.Windows.Forms.DataGridViewCheckBoxColumn   DataGridViewUtilities.CreateCheckBoxColumn(System.String,Boolean,   System.String,Boolean,   System.Windows.Forms.DataGridViewAutoSizeColumnMode,   System.Windows.Forms.DataGridViewColumnSortMode,Int32)'。

callstack是:

at Control.SetupColumns(DataGridView grid) 
at Control..ctor() in ...\Control.cs:line ##

注释掉调用CreateCheckBoxColumn()的行可以在VS Designer中正确打开包含的表单。

CreateCheckBoxColumn()声明为:

static public DataGridViewCheckBoxColumn CreateCheckBoxColumn(string dataPropertyName, bool readOnly = true, string columnName = null, bool threeState = false, DataGridViewAutoSizeColumnMode autosizeMode = DataGridViewAutoSizeColumnMode.None, DataGridViewColumnSortMode sortMode = DataGridViewColumnSortMode.Automatic, int width = 35)
{
...
}

一个奇怪的事情是控件调用与CreateCheckBoxColumn()在同一个类中定义的类似静态方法,而其他方法不会干扰打开表单。

我尝试重建,手动删除内容obj&amp;所有3个项目的bin目录,以及AppData \ Local \ Microsoft \ VisualStudio \ 15.0_6d397e1a \ ProjectAssemblies的内容,关闭VS 2017中的所有打开文档,关闭解决方案,然后重新启动Visual Studio,它没有任何区别。< / p>

我尝试将新的(测试)表单添加到同一个项目(包含无法在Visual Designer中打开的表单的项目),并通过从工具箱中拖动它来添加违规控件。但是当放下控件时会出现错误对话框

Failed to create component 'Control'. 
The error message follows:
'System.MissingMethodException: Method not found CreateCheckBoxColumn(...)

出了什么问题,如何解决这个问题,而无需注释掉代码来打开设计师的控件?

0 个答案:

没有答案