积极答复者
请教一下开发控制时使用 Public Property 没有出现在属性窗口的问题.

问题
-
请问,在使用中为什么只能在代码中调用 SetListType 这个方法,而不能在属性窗口设置?
以下为控件完整代码:
Imports System.ComponentModel Public Class PreviewFrame Public Enum ShowType vertical Horizontal End Enum Dim ListDirection As ShowType = ShowType.vertical <DesignerSerializationVisibility(1), Browsable(True), Category("外观")> Public Property SetListType As ShowType Get Return ListDirection End Get Set(ByVal value As ShowType) ListDirection = value End Set End Property End Class
答案
-
奇怪,我这里没有任何问题。你确定使用的是编译后的dll了吗?
我的测试工程很简单,建立一个library类型的dll,加入一个User Control. 在user control上放几个简单的控件:
C#代码也很简单,就是点按钮的时候,把属性的值赋给控件
public partial class UserControl1 : UserControl { public enum ShowType { Vertical, Horizontal } public UserControl1() { InitializeComponent(); } [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Browsable(true)] [Category("Appearance")] public string FirstName { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Browsable(true)] [Category("Appearance")] public string LastName { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Browsable(true)] [Category("Appearance")] public ShowType SetListType { get; set; } private void button1_Click(object sender, EventArgs e) { tbFirstName.Text = FirstName ?? ""; tbLastName.Text = LastName ?? ""; tbListType.Text = SetListType.ToString(); } }
编译后,在一个winform工程中,引用这个dll, 然后把user control放到一个form中。
属性窗口中都可以看到啊
运行时,点击按钮,text也都显示在textbox中了。
我用的是VS2012 professional. 工程都是4.5.1的.net framework.
你要是需要,我可以把测试工程发给你。
- 已标记为答案 Youjun TangModerator 2015年8月14日 1:47
全部回复
-
奇怪,我这里没有任何问题。你确定使用的是编译后的dll了吗?
我的测试工程很简单,建立一个library类型的dll,加入一个User Control. 在user control上放几个简单的控件:
C#代码也很简单,就是点按钮的时候,把属性的值赋给控件
public partial class UserControl1 : UserControl { public enum ShowType { Vertical, Horizontal } public UserControl1() { InitializeComponent(); } [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Browsable(true)] [Category("Appearance")] public string FirstName { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Browsable(true)] [Category("Appearance")] public string LastName { get; set; } [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] [Browsable(true)] [Category("Appearance")] public ShowType SetListType { get; set; } private void button1_Click(object sender, EventArgs e) { tbFirstName.Text = FirstName ?? ""; tbLastName.Text = LastName ?? ""; tbListType.Text = SetListType.ToString(); } }
编译后,在一个winform工程中,引用这个dll, 然后把user control放到一个form中。
属性窗口中都可以看到啊
运行时,点击按钮,text也都显示在textbox中了。
我用的是VS2012 professional. 工程都是4.5.1的.net framework.
你要是需要,我可以把测试工程发给你。
- 已标记为答案 Youjun TangModerator 2015年8月14日 1:47