簡體   English   中英

停止使用radioButton CheckedChanged事件再次調用函數嗎?

[英]Stop double call to function using radioButton CheckedChanged events?

我有3個單選按鈕,它們都保存在一個分組框中(因此一次只能標記1個)。 我的代碼可以正常工作,但是為了更快地更新標簽,我希望在選擇新的radioButton時停止兩次調用該函數。

例如,在下面的代碼中,默認設置為rb1,然后單擊rb2,則rb1 CheckedChanged事件將觸發並更新標簽,然后rb2的CheckedChanged Event將觸發並再次更新標簽(相同值)。

如果標簽已被更新一次,然后停止再次調用該函數,那么向其中添加一些額外條件的最佳方法是什么?

碼:

private void rb1_CheckedChanged(object sender, EventArgs e)
    {
        if (cmbLetterType.Text.Length != 0)
        {
            updatePrintedCntLabel();
        }
    }

private void rb2_CheckedChanged(object sender, EventArgs e)
{
    if (cmbLetterType.Text.Length != 0)
    {
        updatePrintedCntLabel();
    }
}

private void rb3_CheckedChanged(object sender, EventArgs e)
{
    if (cmbLetterType.Text.Length != 0)
    {
        updatePrintedCntLabel();
    }
}

編輯:澄清一下,這是我正在使用的C#Winforms應用程序。

考慮一下

public class Form1 : Form 
{


    public Form1()
    {
        rb1.CheckedChanged += rb_CheckedChanged;
        rb2.CheckedChanged += rb_CheckedChanged;
        rb3.CheckedChanged += rb_CheckedChanged;
    } 

    private void rb_CheckedChanged(object sender, EventArgs e)
    {

        if (!((Radiobutton)sender).Checked) return;

        if (cmbLetterType.Text.Length != 0)
        {
            updatePrintedCntLabel();
        }

    }
}

將您的條件更改為:

if (cmbLetterType.Text.Length != 0 && rb1.Checked)

還要對其他2個處理程序執行此操作(使用rb2.Checked和rb3.Checked),每個處理程序僅在被檢查的而不是 檢查的情況下才會觸發。

事件正在告訴他們要做的事情

如果您不想兩次更新標簽,請不要
很簡單,如果值沒有變化,就不要更新
保存值並測試更改

為什么會有三個相同的事件處理程序?
您可以將多個事件關聯到同一處理程序。

即使您使用Baldrick的方法,也可以從發件人處獲取按鈕。

WinForm上的后期標記,但仍可以使用相同的方法(如果(labelVal = value)return;)
一般使用的公共財產

private string labelVal = string.empty;

public string LabelVal
{
    get { return labelVal; } 
    set
    { 
        if (labelVal = value) return;
        labelVal = value;
        NotifyPropertyChanged("LableVal");
    }
}

暫無
暫無

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

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