悬赏分:100 浏览:312 次
问题大概是这样。 我重写一个TextBox 控件 增加两个属性 。
屬性1
[Bindable(true)]
[Category("自定义信息区")]
[Browsable(true)]
[Description("綁定實例對象對象名")]
[DefaultValue("")]
public string BindEntityName
{
get { }
set { }
}
[Bindable(true)]
[Category("自定义信息区")]
[Browsable(true)]
[Description("綁定實例對象對象屬性名稱")]
[DefaultValue("")]
屬性2 public string BindEntityPropertyName
{
get { }
set { }
}
具體的屬性的類型是否為string 在再議。現在如果我把一個重寫了的Textbox拖入頁面中的話。那么在它的Properties 視圖中 就會 多出兩個屬性一個是 BindEntityName 一個是 BindEntityPropertyName 。
假設有下面一個class
public class person
{
public string Name
{
.....
}
public string Age
{
......
}
}
當我在BindEntityName 輸入 “person” 以後 。BindEntityPropertyName 會自動綁定 Name Age 兩個item 提供用戶選擇。用戶可以選任意一個 賦給 BindEntityPropertyName 屬性。
目前思路比較亂,希望 大家提示一下
|
BindEntityName 是一个变量的名字,而不是一个类名;这样设计有问题呀,恐怕设计时的作用域作用不到局部变量。
这样的设计有意义吗? 给自定义控件加属性 跟给用户控件加属性是一样的 你的意思是在一个控件里面定义两个属性还是,定义一个person的属性,你很为难. 其实都可以,楼主可以看看这篇文章,看完以后相信对你有帮助 http://www.cnblogs.com/Clingingboy/archive/2006/08/08/470980.html |
|
3个月前 那一年 : 先謝謝大家了 |
|
3个月前 那一年 : BindEntityName 是一個 Textbox 新增的屬性名稱 不是一個變量名稱 |
|
3个月前 玉开 : 那BindEntityName 的值做什么用呀? |
|
2个月前 那一年 : 第一步問題 解決了 謝謝大家的支持 我把 code 貼個大家 [Bindable(true)] [Category("自定义信息区")] [Browsable(true)] [Description("綁定實例對象對象名")] [DefaultValue("")] public string BindEntityName { get { return ViewState["BindEntityName"] == null ? "" : (string)ViewState["BindEntityName"]; } set { ViewState["BindEntityName"] = value; } } [Bindable(true)] [Category("自定义信息区")] [Browsable(true)] [Description("綁定實例對象對象屬性名稱")] [DefaultValue("")] [TypeConverter(typeof(EntityConverter))] public string BindEntityPropertyName { get { return ViewState["BindEntityPropertyName"] == null ? "" : (string)ViewState["BindEntityPropertyName"]; } set { ViewState["BindEntityPropertyName"] = value; } } public class EntityConverter : TypeConverter { public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return true; } public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { List<string> values = new List<string>(); if (context != null) { CTCBTextBox control = context.Instance as CTCBTextBox; if (control != null) { string className = control.BindEntityName; if (className != "") { try |
|
2个月前 THICK : 提供选择值是设计器的问题,楼上有正解 |