我目前正在开发我的第一个用户控件,现在遇到了一些小问题。
该控件是一个自定义PictureBox
的,Button
用于清除图片。我正在重写该OnPaint(PaintEventArgs e)
方法并使控件无效MouseEnter
并MouseLeave
根据鼠标状态为控件绘制新边框。
这一切都应该正常工作。当我想在右上角(相对于图片框)添加一个按钮时,就会出现问题。
1.
按钮相对于 PictureBox 的位置不正确。它被放置在第 0 个 Y 坐标处,这很好,但 X 坐标仅位于位置 100,它应该是 160。我User Controls Width property
在放置按钮时使用的是,但它似乎得到了default value
100分配在窗体上创建 PictureBox 的 160 个。
CustomPictureBox cpic = new CustomPictureBox();
cpic.Location = new Point(20, 20);
cpic.Height = 80;
cpic.Width = 160;
this.Controls.Add(cpic);
按钮是这样添加的:
btnClear = new Button();
btnClear.Width = 20;
btnClear.Height = 20;
btnClear.Location = new Point(this.Width - btnClear.Width, 0);
btnClear.Text = "X";
this.Controls.Add(btnClear);
这个 DefaultValue 来自哪里,它如何阻止控件使用它,而是遵循在初始化控件的新实例时指定的宽度?
2. 另一件事是我无法让按钮工作的事件。我一直在谷歌上搜索并尝试了我能想到的一切,但事件仍然没有触发:(
必须可以直接从用户控件连接到按钮 MouseClick、MouseEnter 和 MouseLeave 事件吗?
如果你想看完整的代码,你可以在这里找到:http: //pastebin.com/vL14Q5CX
谢谢!