我有一个DataGridView
派生控件,它定义了一些新属性。它们在属性检查器中按预期显示输入的连接字符串值,但是当我编译程序时,如果我在:if (ConnectionString == "" )
行的构造函数中放置一个中断 - 它显示ConnectionString
为null,因为它确实是connectionString
。我意识到我应该在写完之后测试null,但关键是该属性中有一个字符串。
目的是将table和connectionString
定义为填充它的属性。我做错了什么?
namespace ASControls
{
public partial class ASDataGridView : DataGridView
{
private string connectionString;
// Declares the property.
[Description("Set the Connection String for the datbase concerned"),
Category("Data")]
public string ConnectionString
{
get { return connectionString; }
set {connectionString= value; }
}
public ASDataGridView()
{
//
// The InitializeComponent() call is required for Windows Forms designer support.
//
InitializeComponent();
//
// TODO: Add constructor code after the InitializeComponent() call.
//
if (ConnectionString == "" )
{
MessageBox.Show("You must set the connection string in order to use an ASDataGridView control");
return;
} else {
InitData(ConnectionString);
}
}
...
答案 0 :(得分:0)
西蒙所说的是,在设计师中,你无法调用你的数据库。解决方案是:
if (IsInDesignMode) // Code runs in Blend --> create design time data.
{
StatBarTextProp = "IN Design mode";
}
else // Code runs "for real"
{
StatBarTextProp = /* Get from DB here*/ ;
}
现在,您的运行时很乐意从数据库中获取内容,并且您的设计将包含您默认的内容。
是的,你可以阅读更多here,但基本上是:
DesignerProperties.IsInDesignMode附加属性
.NET Framework 4.5其他版本尚未对此主题进行评分 - 评价此主题 获取或设置DependencyObject是否在设计器的上下文中运行。
命名空间:System.ComponentModel
程序集:PresentationFramework(在PresentationFramework.dll中) XMLNS for XAML:未映射到xmlns。