- 自定义控件设置图标:[ToolboxBitmap(typeof(),"")]
- 属性重置
[Browsable(true)]
[Category("FKey")]
[Description("获取或者设置功能按键的个数,范围:[1,12],默认值:12。")]
[DefaultValue(12)]
public int FKeyMax
{get { return fKeyMax; }
set
{
if (value >= 1 && value <= 12)
{
fKeyMax = value;
SubControlSizeChange();
}
else fKeyMax = 12;
}
}
- Resize事件实现在动态布局:动态更改子控件大小;与SizeChange、OnResize的区别呢?
猜想:是实例对象在创建流程中,事件执行先后顺序有区别吧。
参考:C#当窗体大小改变时,窗体中的控件大小也随之改变
private void FKey_Resize(object sender, EventArgs e)
{
SubControlSizeChange(base.Width, base.Height);
}
- OnCreateControl事件:在界面布局时,更改控件大小等属性,不会触发,该事件在关闭设计,再打开设计时触发。
protected override void OnCreateControl()
{
base.OnCreateControl();
//其他代码。。。
}
-
数组的GetLowerBound(int dimension);GetUpperBound(int dimension)方法
-
UserControl 用户控件,识别按下了哪个按钮
public FKey()
{
InitializeComponent();
this.SuspendLayout();
btnObj = new iButton[FKeyMax];
for (int i = btnObj.GetLowerBound(0); i <= btnObj.GetUpperBound(0); i++)
{
btnObj[i] = new iButton();
btnObj[i].Name = "FKeyBtn" + i.ToString();
btnObj[i].Location = new System.Drawing.Point((int)(i * base.Width / FKeyMax * 1.0), 0);
btnObj[i].Size = new System.Drawing.Size((int)(base.Width / FKeyMax * 1.0) - space, base.Height);
btnObj[i].TabIndex = i;
btnObj[i].Text = "F" + (i + 1).ToString();
btnObj[i].Tag = i;
//btnObj[i].Leave +=;//在输入焦点离开控件时发生
//btnObj[i].MouseDown +=;//当鼠标指针位于控件上并按下鼠标键时发生
btnObj[i].MouseUp += (object o, MouseEventArgs e) => { System.Diagnostics.Debug.WriteLine($"按钮 {(o as iButton).Tag}"); };//当鼠标指针位于控件上并释放鼠标键时发生
Controls.Add(btnObj[i]);
}
this.ResumeLayout(false);
}