在c#中设置自定义控件的默认大小/文本

时间:2015-12-15 21:01:08

标签: c# winforms custom-controls

我在C#应用程序中创建自定义控件以添加新属性(下面的MyProperty)。它继承自Label。我想要做的一件事是,当我将它拖到我的表格(200x132)时,以特定尺寸显示。我也希望它不显示任何文字。但是,无论我如何尝试这样做,它似乎都不起作用。但是,我可以毫无问题地设置BackColor和BorderStyle。我对C#很新,所以也许我错过了一些明显的东西。

这是我的代码:

using System.Drawing;
using System.Windows.Forms;

namespace MyProgram
{

    public enum MyEnum
    {
        Value1, Value2, Value3
    }

    public partial class MyControl : Label
    {

        public MyControl()
        {
            BackColor = Color.LightCoral;
            BorderStyle = BorderStyle.FixedSingle;
            AutoSize = false;
            Size = new Size(200, 132);
            Text = "";
            InitializeComponent();
        }

        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
        }

        private MyEnum myProperty;

        public MyEnum MyProperty
        {
            get { return myProperty; }
            set { myPropery = value; }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

在我看来,通过Dispersia的链接提供的答案有一个错误。文本重置应该发生一次,然后无论用户做什么都不重要。在Dispersia的链接中,您实际上无法将文本设置回控件名称,因为它会一直消隐。

cramopy提供的答案在技术上没有回答你的问题,但这是通过使用UserControl上的默认值来实现的。您还需要将Text的{​​{1}}属性绑定到标签上。

以下内容应在继承UserControl时生效,并且只会重置Label属性一次。

Text

答案 1 :(得分:1)

@Dispersia 回复仅回答myControl1内容。 (同时删除)

这是一个解决问题的完整指南:

  • 添加名为UserControl
  • 的新MyLabel
  • 在Designer模式下更改以下内容:
    • BorderStyle:= FixedSingle
    • Size:= 200; 132
  • 现在将新Label拖放到控件
  • 编辑这些Label值(也在Designer模式下):
    • AutoSize:= false
    • BackColor:= LightCoral
    • Dock:= Fill
    • Text:= clear/empty this box!!(不要在包装盒内写下这个,你真的要清除它!)
    • TextAlign:= MiddleCenter

只需重新编译您的项目&&从工具栏添加MyLabel控件 现在它出现在你想要的地方!!