簡體   English   中英

c# winform .net 為用戶控制創建按鈕點擊事件

[英]c# winform .net create button click event for user control

我對 c# winform(.net 框架)用戶控件有疑問。

  • 我有一個“通知”用戶控制包含按鈕的內容和一些信息。
  • 我有一個“今日清單”表格,dinamycal 用數據庫生成 UC。

我不知道如何為按鈕創建事件。 當我單擊一個按鈕時,我想從 UC 獲取一個信息(標簽)。

圖片:

UC(我想得到'label2'文本)

UC(我想得到'label2'文本)

生成的 UC

生成的 UC

我試過這種方式但沒有:

編輯:

加州大學

public event EventHandler<ActionTaskEventArgs> ActionTaskClicked;

        private void button1_Click(object sender, EventArgs e)
        {
            string cardid = label2.Text;
            var args = new ActionTaskEventArgs(cardid);
            ActionTaskClicked?.Invoke(this, args);
        }

        public class ActionTaskEventArgs : EventArgs
        {
            public ActionTaskEventArgs(string taskId)
            {
                TaskId = taskId;
            }

            public string TaskId { get; }
        }

形式

//UC generating:
if (statusz[i] == "Kiadott")
                {
                    listItems[i] = new notifications();

                    listItems[i].Title = title[i];
                    listItems[i].Details = details[i];
                    listItems[i].Id = id[i].ToString();
                    listItems[i].Finish = "Ma";
                    listItems[i].BtnTxt = "Kezdés";
                    listItems[i].BtnVisible = true;
                    listItems[i].color = Color.FromArgb(254, 95, 85);

                    flowLayoutPanel1.Controls.Add(listItems[i]);
                    listItems[i].ActionTaskClicked += this.ActionTask_Clicked;

                }

//
private void ActionTask_Clicked(object sender, notifications.ActionTaskEventArgs e)
        {
            MessageBox.Show(e.TaskId);
        }

有人可以幫我嗎?

現在我得到一個錯誤:

        void UC_Click(object sender, EventArgs e)
        {
            //I gave an error for the below row! Can't convert button type to notifications type i guess.
            notifications obj = (notifications)sender;
            MessageBox.Show(obj.Id);
        }

您可以通過定義自定義添加/刪除訪問器將用戶控件的事件“轉發”到按鈕:

// UC:
public event EventHandler ButtonClick
{
    add => btn.Click += value;
    remove => btn.Click -= value;
}

並在您的主窗體中訂閱notifications.Click 。單擊(這似乎是生成的多個孩子的用戶控件)。 但實際上您應該訂閱子控件的ButtonClick

((UC)asd.Controls[0]).ButtonClick += Child0Click;

你不需要

public event EventHandler btnClick;

嘗試刪除它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM