问题描述:自定义控件UserControl1 中有 TableName 属性(代码如下),Browsable(true)。
然后有UserControl2继承自UserControl1(代码如下),
生成 UserControl2 控件,在IDE的“属性”窗口可以看到 TableName ,FieldName 2 个属性。
现在偶想生成的 UserControl2 在IDE的“属性”窗口只可以看到 FieldName 1 个属性,使TableName属性不可见,
即怎样使父控件的TableName属性在IDE的“属性”窗口中不可见 Browsable(false)???(注:不可以 Override,new)
-----------------------------------------------public class UserControl1 : System.Windows.Forms.UserControl
{string tableName = null;
[Category("MySettings"),Browsable(true)]
public string TableName
{
get{return tableName; }
set{tableName = value;}
}
}public class UserControl2 : UserControl1
{string fieldName = null;
[Category("MySettings"),Browsable(true)]
public string FieldName
{
get{return fieldName; }
set{fieldName = value;}
}
}
谢谢

解决方案 »

  1.   

    把UserControl1 的TableName 属性 设成 private就行了
      

  2.   

    to; mikezhou() 
    UserControl1 的TableName 属性 不能 在 class UserControl1 中设成 private,
    因为UserControl1也是一个控件,单独使用时需要显示TableName 属性 若可以在 class UserControl2 中把UserControl1 的TableName 属性设成 private就好啦,
    但没有方法可以这样做呀。
    估计此问题无解了,来者有分呀
      

  3.   

    去掉,[Category("MySettings"),Browsable(true)]呢?
      

  4.   

    "UserControl1 的TableName 属性 不能 在 class UserControl1 中设成 private" 你的意思是,就像textBox对象有TEXT属性,当你派生生一个MYTEXTBOX时,不能要TEXT属性,但单独用TEXTBOX控件时就要有TEXT属性?
      

  5.   

    那你不应该继承UserControlb 了
      

  6.   

    (注:不可以 Override,new)
    这个要求太苛刻了。楼主既然用了继承,为什么不需用这两种途径呢?
      

  7.   

    to:  mikezhou() 就是你说的意思。
    to: epimetheus(阿戈尔)
    因为用new隐藏重写 父类UserControl1的TableName属性,
    需要用到UserControl1内部的private变量,子类里不能重写,子类UserControl2 中出要调用到 UserControl1.的TableName属性的值,
    只是希望它的Browsable(true)变成Browsable(false) or 变成 private 我偶现 UserControl2 继承自 System.Windows.Forms.UserControl,
    然后UserControl2 中实例一个 UserControl1 ,
    这样写效果是达到了,
    但感觉这样写不太好
    算了,
    无解就散分啦