我是法国人,为我的英语不好而感到抱歉...但我希望你能帮助我;)
我正在用C#开发一个软件,在DB中存储大量信息,例如有关人的信息。
我想通过漂亮的UI显示这些信息,
为此,我创建了:
我进行一个循环,对于每个人,我使用每个人的信息调用方法“ createPanel”,并将这些创建的子面板添加到父面板中。每个人的ID存储在子面板的“ tag”参数中。
一切正常,但是我真的不知道如何在每个子面板中添加事件。 正如您在上面的链接中看到的那样,用户可以单击书签或显示菜单的图标(带有3点的圆形=图标“菜单”)。
我的问题是如何为每个子面板动态添加事件?例如,当我单击图标“菜单”时,我想为每个子面板显示一个菜单,将ID存储在子面板的“标签”中,并显示用于管理信息的新表单。
感谢您的帮助,如有必要,我可以添加代码:)
答案 0 :(得分:0)
为要显示的面板制作自己的用户控件,其中包含所需工具箱中的所有控件。
public partial class MyControl : UserControl
{
...
}
在“ MyControl”中,为所有可能发生的事件定义事件,这些事件必须在控件的外部中进行处理。与例如组合框为“ SelectedIndexChanged”。
您的控件类将如下所示:
public partial class MyControl : UserControl
{
public event EventHandler<MyImportantEventA> OnImportantThingHappend;
//Event-Invoker
protected virtual void OnOnImportantThingHappend(MyImportantEventA e)
{
OnImportantThingHappend?.Invoke(this, e);
}
}
//Data of your event. Customize as you like/need.
public class MyImportantEventA : EventArgs
{
public string Message { get; set; }
}
动态添加控件时,请绑定到控件的事件:
myUserControl.OnImportantThingHappend += DoSomethingWithEvent;
控件可以自行处理的事情,不需要作为事件公开。 例如:
“关闭”可能是必须从外部处理的内容。您需要删除控件,重新排列控件等。
“显示详细信息”可能是可以在控件内部完全处理的东西。您的控件将显示一个消息框或精美的工具提示。