簡體   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