2012-03-15 72 views
0

我试图阻止Visual Studio尝试序列化下拉列表中的datasource。它只是一个简单的控件,它从数据库加载其数据源,并从ComboBox继承。我用于datasoure的对象不是可序列化的,所以当我试图做几乎任何设计器时,它都会出错,称代码生成失败。我已经尝试将此添加到我的代码希望它会阻止VS这样做,但它没有奏效。从组合框导出的Visual Studio设计器和控件

<Obsolete("This property does nothing.")> 
    <System.ComponentModel.Browsable(False)> _ 
    <System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)> _ 
    Public Shadows Property Datasource() As Object 
     Get 
      Return Nothing 
     End Get 
     Set(ByVal value As Object) 

     End Set 
    End Property 

它仍然以某种方式被访问datasource,所以它必须被看到我的控制作为ComboBox和阅读基类属性。我能做些什么来阻止它?

+0

如何从数据库加载数据源?听起来像设计师也在尝试这样做。问题不在发布的代码中。 – LarsTech 2012-03-15 19:44:44

+0

@LarsTech,问题不在发布的代码中,它在VS设计器中(没有可用的代码)。我在构造函数中加载数据源,出于某种原因,VS正在努力序列化我加载的数据源,然后将其放入'InitializeComponent'函数中。 – Kratz 2012-03-15 20:14:41

+0

设计者不得不运行空构造函数。如果你把它放在DataSource设置的前面,'If Not Me.DesignMode Then'是否工作? – LarsTech 2012-03-15 20:20:45

回答

0

不正是我在想什么,但我想这不会回答这个问题,因为我确定有没有被绑定在设计时数据源的控制,但是使用这个属性,

if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) 
{ 
    // design time only stuff 
} 
else 
{ 
    // runtime only stuff. 
} 

从这篇文章:http://dotnetfacts.blogspot.com/2009/01/identifying-run-time-and-design-mode.html

我可以防止自己在设计时加载数据源,所以VS没有任何尝试序列化。

相关问题