我在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; }
}
}
}
答案 0 :(得分:3)
在我看来,通过Dispersia的链接提供的答案有一个错误。文本重置应该发生一次,然后无论用户做什么都不重要。在Dispersia的链接中,您实际上无法将文本设置回控件名称,因为它会一直消隐。
cramopy提供的答案在技术上没有回答你的问题,但这是通过使用UserControl
上的默认值来实现的。您还需要将Text
的{{1}}属性绑定到标签上。
以下内容应在继承UserControl
时生效,并且只会重置Label
属性一次。
Text
答案 1 :(得分:1)
@Dispersia 回复仅回答myControl1
内容。 (同时删除)
这是一个解决问题的完整指南:
UserControl
MyLabel
BorderStyle
:= FixedSingle
Size
:= 200; 132
Label
拖放到控件Label
值(也在Designer模式下):
AutoSize
:= false
BackColor
:= LightCoral
Dock
:= Fill
Text
:= clear/empty this box!!
(不要在包装盒内写下这个,你真的要清除它!)TextAlign
:= MiddleCenter
只需重新编译您的项目&&从工具栏添加MyLabel
控件
现在它出现在你想要的地方!!