[英]C# radiobutton keydown event
我編寫了一個簡單的代碼,可以接受(輸入鍵)所選的單選按鈕。 並檢查單選按鈕文本是否與答案匹配。 但是這段代碼太多余了,有沒有辦法使它更簡單?
private void btn1_KeyDown(object sender, KeyEventArgs e)
{
var row = dTable.Rows[currentRow];
var ans = row["ANSWER"].ToString();
if (btn1.Text == ans)
{
scoreAdd();
MessageBox.Show("Correct");
}
else
{
MessageBox.Show(ans);
}
currentRow++;
nextRow();
}
private void btn3_KeyDown(object sender, KeyEventArgs e)
{
var row = dTable.Rows[currentRow];
var ans = row["ANSWER"].ToString();
if (btn3.Text == ans)
{
scoreAdd();
MessageBox.Show("Correct");
}
else
{
MessageBox.Show(ans);
}
currentRow++;
nextRow();
}
private void btn4_KeyDown(object sender, KeyEventArgs e)
{
var row = dTable.Rows[currentRow];
var ans = row["ANSWER"].ToString();
if (btn4.Text == ans)
{
scoreAdd();
MessageBox.Show("Correct");
}
else
{
MessageBox.Show(ans);
}
currentRow++;
nextRow();
}
private void button_KeyDown(object sender, KeyEventArgs e)
{
Button button = sender as Button;
var row = dTable.Rows[currentRow];
var ans = row["ANSWER"].ToString();
if (button.Text == ans)
{
scoreAdd();
MessageBox.Show("Correct");
}
else
{
MessageBox.Show(ans);
}
currentRow++;
nextRow();
}
只需將發件人轉換為Button並從中獲取文本。
並將所有事件按鈕綁定到button_KeyDown。
這樣,您只有一種方法。
為邏輯創建通用方法,例如:
protected void TheLogic(string txt)
{
var row = dTable.Rows[currentRow];
var ans = row["ANSWER"].ToString();
if (txt == ans)
{
scoreAdd();
MessageBox.Show("Correct");
}
else
{
MessageBox.Show(ans);
}
currentRow++;
nextRow();
}
然后,使用相應的參數文本在每個KeyDown
事件中調用TheLogic
函數,例如,
private void btn3_KeyDown(object sender, KeyEventArgs e)
{
TheLogic(btn3.Text);
}
private void btn4_KeyDown(object sender, KeyEventArgs e)
{
TheLogic(btn4.Text);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.