繁体   English   中英

如何动态创建带有面板的数据网格?

[英]how create a datagrid with panel dynamically?

我是法国人,很抱歉我的英语不好...但我希望你能帮助我;)

我正在用 C# 开发一个软件,在数据库中有很多信息存储,比如关于人的信息。

我想用漂亮的 UI 显示这些信息,如下所示:

为此,我创建了:

  • Visual 中的第一个面板
  • 用于动态创建子面板的类

我做了一个循环,对于每个人,我用每个人的信息调用一个方法“createPanel”,并将这些创建的子面板添加到父面板中。 每个人的 ID 存储在子面板的“标签”参数中。

一切正常,但我真的不知道如何在每个子面板中添加事件。 正如您在上面的链接中看到的,用户可以单击书签或图标以显示菜单(带有 3 点的圆形 = 图标“菜单”)。

我的问题是如何为每个子面板动态添加事件? 例如,当我单击“菜单”图标时,我想为每个子面板显示一个菜单,在子面板的“标签”中获取 id 存储,并显示一个用于管理信息的新表单。

感谢您的帮助,如有必要,我可以添加我的代码:)

为要显示的面板创建自己的用户控件,其中包含您需要的工具箱中的所有控件。

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;

控件可以自行处理的事情,不需要作为事件公开。 例如:

“关闭”可能是必须在外部处理的事情。 您需要删除控件,重新排列控件等。

“显示详细信息”可能是可以完全在您的控制范围内处理的内容。 您的控件会显示一个消息框或精美的工具提示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM