【发布时间】:2015-09-22 22:00:34
【问题描述】:
我制作了一个源自PictureBox 的自定义控件,它基本上既可以用作文本区域(单行和多行),也可以用作按钮(具有自定义边框颜色和正常/活动/禁用等状态的颜色) .
问题是:当我在 Designer 打开时重建我的项目时,第一个放置的自定义控件从我的项目中消失(完全从 .Designer.cs 中删除,并且在 Designer 和属性控件列表中不可见)。
如果我先关闭设计器视图,然后重建然后再次打开设计器,控件不会自行删除。
这可能是什么原因?
编辑:这似乎是 OnParentChanged 事件造成的,但我不太确定为什么?
这是我的自定义控件的所有代码:(已删除与问题无关的代码)
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
public class PicBox : PictureBox {
[NotifyParentProperty(true), RefreshProperties(RefreshProperties.Repaint)]
public Color BorderNormalColor { get { return borderNormalColor; } set { borderNormalColor = value; RefreshInactiveColor(); } }
private Color borderNormalColor = Color.FromArgb(255, 44, 44, 44);
//Several more properties like this for other things
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
//code for updating properties
}
protected override void OnParentChanged(EventArgs e) {
base.OnParentChanged(e);
Form mParent = (Form)Parent;
mParent.Move += Parent_Move;
}
private void Parent_Move(object sender, EventArgs e) {
Invalidate();
}
public PicBox() {
}
}
【问题讨论】:
标签: c# controls windows-forms-designer designer