C# 点击控制按钮

C# 点击控制按钮,c#,winforms,custom-controls,C#,Winforms,Custom Controls,我正在尝试创建一个自定义控件,该控件在单击时发出均匀的声音。 我的控件只是一个面板,里面有几个标签和一个图片盒 点击效果很好,唯一的问题是我必须点击控件的背景,如果我按下picturebox,则无法工作 我已经将点击事件添加到控件中,但是我想在它的每个位置按下按钮来触发事件,而不仅仅是面板的背景 我考虑添加一个完全覆盖控件的透明对象。实际上我不喜欢这个想法,但是,我试过用一个picturebox,但我看不透它。这是不透明的。我只能看到面板背景,但它覆盖了标签和图像 感谢您的支持。如果面板中只有两

我正在尝试创建一个自定义控件,该控件在单击时发出均匀的声音。 我的控件只是一个面板,里面有几个标签和一个图片盒

点击效果很好,唯一的问题是我必须点击控件的背景,如果我按下picturebox,则无法工作

我已经将点击事件添加到控件中,但是我想在它的每个位置按下按钮来触发事件,而不仅仅是面板的背景

我考虑添加一个完全覆盖控件的透明对象。实际上我不喜欢这个想法,但是,我试过用一个picturebox,但我看不透它。这是不透明的。我只能看到面板背景,但它覆盖了标签和图像


感谢您的支持。

如果面板中只有两个对象,您可以将它包含的所有对象的单击事件挂接到同一个事件处理程序,这样做没有错

public class MyUserControl : UserControl
{
    public event Action<MyUserControl> MyControlClick

    public string ID {get; set;}

    public MyUserControl()
    {
        InitializeComponents();

        // The same event handler code will be used for the three controls
        myPictureBox.Click += global_Click;
        myLabel1.Click += global_Click;
        myLabel2.Click += global_Click;
        this.Click += global_Click;
    }

    void global_Click(object sender, EventArgs e)
    {
        if (MyControlClick != null)
            MyControlClick(this);
    }
}

事实上!除非必须对Usercontrol应用自己的方法,否则无法向Usercontrol中的元素引发任何事件,或者可以禁用Usercontrol中的元素,但它会更改该元素的颜色,但在单击控件时会引发click事件。

实际上,我更喜欢挂接相同的click事件,这样更容易。有没有办法继承子控件上的事件?我同意:使用透明面板对于许多控件都是值得的。例如,我正在使用这是一个项目,使用户能够移动和调整动态创建的控件的大小。我正在为游戏创建服务器列表,每个服务器都有服务器名称、motd和徽标/图像。因此,此自定义控件包含这三个元素,您可以在任何地方单击以触发选择服务器操作。如果有什么东西可以自动分配点击挂钩,我会很高兴的。比如告诉孩子们从父母那里继承……用代码而不是我编辑答案的设计器可以很快完成。如果您计划动态地向面板添加或删除控件,则inherit的功能将是Interesting。是的,我刚刚完成了。。但我现在面临另一个问题:全局单击方法包含发送方,而发送方不再是控件本身。我使用sender参数从sender获取属性,该属性实际上是列表中单击的服务器的服务器id。。
aControl.MyControlClick += aControl_MyControlClick;

// ...

// This code is triggered when a MyUserControl is clicked
void aControl_MyControlClick(MyUserControl ctl)
{
    MessageBox.Show(ctl.ID);
}