亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

影響多個表單對象的函數(checkedListBox)

影響多個表單對象的函數(checkedListBox)

C#
陪伴而非守候 2022-10-15 14:14:33
我在一個表單上有多個checkedListBox。對于每個checkedListBox,我都有一個“全選”項目的按鈕:private void btnSelectAll1_Click(object sender, EventArgs e){    for (int i = 0; i < checkedListBox1.Items.Count; i++)    {        checkedListBox1.SetItemCheckState(i, CheckState.Checked);    }}每個按鈕都具有與checkedListBox2、3、4等相同的功能。我不想復制每個單擊功能中的代碼,而是簡單地使用一個替換按鈕對應的“checkedListBox”的功能。例如,“btnSelectAll1”將“checkedListBox1”發送給函數,“btnSelectAll2”發送“checkedListBox2”等等。就像是:private void btnSelectAll1_Click(object sender, EventArgs e){    SelectAll(checkedListBox1)}private void btnSelectAll2_Click(object sender, EventArgs e){    SelectAll(checkedListBox2)}void SelectAll(strCheckedListBox){    for (int i = 0; i < strCheckedListBox.Items.Count; i++)    {        strCheckedListBox.SetItemCheckState(i, CheckState.Checked);    }}
查看完整描述

2 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

您可以使用該Control.Tag屬性checkedListBox在每個按鈕中存儲正確的引用:


首先,在 中分配checkedListBox控件引用Form_Load:


btnSelectAll1.Tag = checkedListBox1;

btnSelectAll2.Tag = checkedListBox2;

...

btnSelectAll10.Tag = checkedListBox10;

然后,為所有這些按鈕創建一個事件處理程序(確保將 Form.Designer.cs 文件中每個按鈕的事件指向此事件處理程序):Click


private void SelectAll_Click(object sender, EventArgs e)

{

    var clickedButton = sender as Button;

    var checkedListBoxControl = clickedButton.Tag as CheckedListBox;


    // Do what you need with checkedListBoxControl... 

}


查看完整回答
反對 回復 2022-10-15
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

很簡單,在 winforms 中的每個事件中,發送者都是引發事件的對象。


Button button1 = new Button() {...}

Button button2 = new Button() {...}


button1.OnClicked += this.OnButtonClicked;

button2.OnClicked += this.OnButtonClicked;

// both buttons will call OnButtonClicked when pressed

您也可以在 Visual Studio Designer 中使用帶有閃電標記的選項卡在屬性窗口中執行此操作。只需選擇您以前使用過的功能。


private void OnButtonClicked(object sender, EventArgs e)

{

    Button button = (Button)sender;

    // now you know which button was clicked

    ...

}

如果您讓其他項目也調用此偶數處理程序,請小心


ListBox listBox = new ListBox();

listBox.OnClicked += this.OnButtonClicked;


private void OnButtonClicked(object sender, EventArgs e)

{

    // sender can be either a Button or a ListBox:

    switch (sender)

    {

         case Button button:

             ProcesButtonPressed(button);

             break;

         case ListBox listBox:

             ProcessListBoxPressed(listBox);

             break;

    }

}

這個 switch 語句對你來說可能是新的。請參閱C# 7 中的模式匹配


查看完整回答
反對 回復 2022-10-15
  • 2 回答
  • 0 關注
  • 103 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號