C# 具有按钮和按钮事件的用户控件
我目前正在处理我的第一个用户控件,现在遇到一些小问题 该控件是一个自定义的C# 具有按钮和按钮事件的用户控件,c#,user-controls,C#,User Controls,我目前正在处理我的第一个用户控件,现在遇到一些小问题 该控件是一个自定义的图片盒,带有一个按钮,用于清除图片。我正在重写OnPaint(PaintEventArgs e)方法,并使MouseEnter和MouseLeave上的控件无效,以便根据鼠标状态为控件绘制新边框 这一切都是正常的。当我想在右上角(相对于PictureBox)添加一个按钮时,就会出现问题 1. 该按钮相对于PictureBox的位置不正确。它被放置在第0个Y坐标处,这很好,但X坐标仅在位置100处,应该是160。我在放置按钮
图片盒
,带有一个按钮
,用于清除图片。我正在重写OnPaint(PaintEventArgs e)
方法,并使MouseEnter
和MouseLeave
上的控件无效,以便根据鼠标状态为控件绘制新边框
这一切都是正常的。当我想在右上角(相对于PictureBox)添加一个按钮时,就会出现问题
1.
该按钮相对于PictureBox的位置不正确。它被放置在第0个Y坐标处,这很好,但X坐标仅在位置100处,应该是160。我在放置按钮时使用了User Controls Width属性
,但它似乎获得了默认值
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事件
如果您想查看完整的代码,可以在此处找到:
谢谢!按钮未按预期对齐,因为:
private void CustomPictureBox1_Resize(object sender, EventArgs e)
{
btnClear.Location = new Point(this.Width - btnClear.Width, 0);
}
button click事件不起作用的原因是,它们只会冒泡到父用户控件;承载该控件的窗体将不会接收到它们。您需要在用户控件上创建一个新的自定义事件处理程序,从用户控件的button click事件中触发。然后处理该自定义事件在你的表格上没有处理程序
HTH我知道Anchor属性,但不幸的是,这也不是问题所在。