当前位置:编程学习 > C#/ASP.NET >>

C#自定义控件设置的问题求助

        public string DetailRtf
        {
            get { return Detail.Rtf; }
            set { Detail.Rtf = value; }
        }

        public override string Text
        {
            get { return Detail.Text; }
            set { Detail.Text = value; }
        }

控件中包含上述代码,可是生成的控件在设计状况下,没有Text属性,代码修改成

        public string Text2
        {
            get { return Detail.Text; }
            set { Detail.Text = value; }
        }

就可以看见Text2属性,如果不用override,会生成警告将隐藏继承的成员“System.Windows.Forms.UserControl.Text”。若要使当前成员重写该实现,请添加关键字 override。否则,添加关键字 new。我用new试过也是不行,请问要怎样才能让我自定义控件在设计状况下属性中能有Text属性?

另外想请问我希望在设计窗体上加入自定义控件,自定义控件可以显示缺省控件名,类似Label控件,能按次序显示MyControl1,MyControl2,... ...这样要怎么实现?我在MyControl_Load中获取this.Name是固定的控件类名MyControl --------------------编程问答-------------------- 既然override可以,为什么不用?
public new string Text
        {
            get { return Detail.Text; }
            set { Detail.Text = value; }
        }


--------------------编程问答-------------------- 我用的是VS2010,另外补充说明一下,我自己代码没有设置Text属性的情况下,按提示应该是继承了那个System.Windows.Forms.UserControl.Text的状况,设计状况下属性中也是没有Text,不过在运行时候可以取得和设置Text,而且这个Text就是Detail.Text (Detail是包含在自定义控件中的一个RichTextBox) --------------------编程问答--------------------
引用楼主  的回复:
        public string DetailRtf
        {
            get { return Detail.Rtf; }
            set { Detail.Rtf = value; }
        }

        public override string Text
        {
            ge……


我用过new,一样不行! --------------------编程问答-------------------- 直接继承RichTextBox就行了嘛,不需要继续于UserControl
public class TextBoxEx : RichTextBox --------------------编程问答-------------------- 我的自定义控件蛮多内容的,RichTextBox只是其中显示说明文字的部分,所以没有办法用这个继承。
现在如果属性名不用Text,其实就可以,只是想搞清楚原因是什么,要怎么解决! --------------------编程问答--------------------
using System;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(textBoxEx1.Text);
        }
    }

    public class TextBoxEx : UserControl
    {
        private RichTextBox Detail;
        public TextBoxEx()
        {
            Detail = new RichTextBox();
            this.Controls.Add(Detail);
        }

        public string DetailRtf
        {
            get { return Detail.Rtf; }
            set { Detail.Rtf = value; }
        }

        public new string Text
        {
            get { return Detail.Text; }
            set { Detail.Text = value; }
        }
    }
}


哪里不行啊

--------------------编程问答-------------------- 这个论坛好像不能上传附件,您方便加我QQ860495425,或者发个Mail到860495425@qq.com告诉我您的信箱吗?我可以直接发VS的控件项目文档给您看吗?

我用new也是一样不行 --------------------编程问答-------------------- 懒得理你


--------------------编程问答-------------------- 你是想要Text在属性窗口显示出来?这样就行了
[Browsable(false)]
public override string Text
{
  get { return Detail.Text; }
   set { Detail.Text = value; }
}

--------------------编程问答-------------------- 谢谢!设置 [Browsable(true)]这样就可以了。
另外一个问题,就是怎么按次序显示MyControl1,MyControl2,... ...应该怎么设置?
我希望是自动生成的控件名显示在GroupBox的Text的地方,但现在的状况是自动显示在我的RichTextBox里面
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,