C#中怎么添加这样的控件? 想做一个类似的控件,如下图所示,不知道怎么弄,请大家指教~

最好写上代码,以及相应的设置~谢谢啦!就是图片上最右边的那个字体对话框,那个省略号很神奇的,我也想弄个类似的,空闲时候是不显示的,等到鼠标点到文本框的时候就出现那个省略号... 最好写上代码,以及相应的设置~谢谢啦!
就是图片上最右边的那个字体对话框,那个省略号很神奇的,我也想弄个类似的,空闲时候是不显示的,等到鼠标点到文本框的时候就出现那个省略号的东东了。
展开
 我来答
潇洒草
2012-01-16 · TA获得超过243个赞
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:132万
展开全部
开发自定义控件中,有专门的编辑器,这个编辑器就是所谓的省略号后的窗体。
需要用到System.Drawing.Design.UITypeEditor基类,自己新建一个类,继承这个基类,然后重写方法,如:UITypeEditorEditStyle、EditValue
并不是你想的那么简单,其中数据类型的判断,转换等,还需要自己创建一个类并继承TypeConverter基类,在类中重写需要的方法。在你说的省略号窗体类开头需要引入这个类型转换类。
为此,你还要创建一个类,专门用来存放属性窗体中设置的属性,并也需要引入TypeConverter
这种事情不是一句话就能说明白的,想开发自定义控件,还需多学习一下。
我工作上的需要也开发过,但这类的开发任务不多,所以很多也都忘记了。
1、创建一个窗体,也就是你单击省略号后弹出的属性窗体(需引入TypeConverter)
2、创建一个类型类,这个类主要是针对你直接在属性文本框中输入的内容的转换操作,继承TypeConverter基类。如:文本框中直接输入“宋体,9PT”,这个类就需要对你输入的内容进行格式化转换并将转换后的信息赋值给对应的属性。
3、创建一个类,这个类中有关于你窗体中参数对应的属性get;set;(需引入TypeConverter)
4、需要创建一个专门处理属性的类,继承UITypeEditor基类,这个类主要负责怎样出处理,省略号窗体类中的属性,需要在控件属性中引入,如:
[DefaultValue(""), Description("参数"), Category(""), Editor(typeof(ParamsEditor), typeof(System.Drawing.Design.UITypeEditor))]
public IParams Params
{
get { return iParams; }
set { iParams = value; }
}
这里的Params就相当于,你图中所示的Font属性,引入Editor编辑器后,就会出现省略号,表示可以打开内置的属性编辑器,这个编辑器就是上面说的了。
补充一下:自定义控件类,需要引入[Serializable]标记为可序列化,因为需要本地存储设置好的属性哈。
去MSDN查阅资料!
(来来回回修改了几次啦,如果对你有用,就打点赏吧!)
雪夜月同孤
2012-01-15 · TA获得超过281个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:167万
展开全部
你截图里面哪是控件,是一个属性吧。
你的控件要实现什么样的功能?设置字体大小和颜色的?我有C#组件编程方面的资料,留个联系方式给你发过去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyangbdwk
2012-01-15 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4389万
展开全部
propertygrid
c#里面有这个控件。
你添加一个这个控件,
然后单击事件中写
propertygrid.selectedobject=this;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七杀有毒
2012-01-16 · TA获得超过655个赞
知道答主
回答量:114
采纳率:0%
帮助的人:39.4万
展开全部

楼主您好.帮你写了个简单的例子.

后台代码:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication3

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)

        {

        }

        private void textBox1_Enter(object sender, EventArgs e)

        {

            button1.Visible = true;

        }

        private void textBox1_Validated(object sender, EventArgs e)

        {

            if (!button1.Focused)

                button1.Visible = false;

        }

        private void button1_Validated(object sender, EventArgs e)

        {

            if (!textBox1.Focused)

                button1.Visible = false;

        }

        private void button1_Click(object sender, EventArgs e)

        {

            MessageBox.Show("abc");

        }

    }

}

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式