【发布时间】:2012-11-29 20:11:19
【问题描述】:
我目前正在开发我的第一个用户控件,现在遇到了一些小问题。
该控件是自定义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
谢谢!
【问题讨论】:
标签: c# user-controls