2013-12-22 38 views
1

我有一個c#窗體上的按鈕,當它被點擊時,應該將其文本值更改爲字母順序中的下一個字母。c#按鈕單擊增加字母表字母

默認按鈕值是一個破折號「 - 」(當應用程序啓動時)。點擊按鈕時,它應該變爲A,再次點擊時,變爲B.在Z處,它應該重置爲A.

但是,當按下按鈕時,它有以下代碼只是返回一個開放的括號「[」。

private void alphaCode_Click(object sender, EventArgs e) 
    { 
     string s = null; 
     for (char c2 = 'A'; c2 <= 'Z' + 1; c2++) 
     { 
      s = c2.ToString(); 
     } 

     alphaCode.Text = s; 
    } 

回答

2

你並不需要在alphaCode_Click一個循環,因爲循環發生的「點擊」事件處理程序之外。這是循環的用戶(通過點擊按鈕);你的代碼執行該循環的一個步驟。

因此,所有你需要的是選擇從alphaCode.Text信中,添加一個到它,並把它放回alphaCode.Text領域:

private void alphaCode_Click(object sender, EventArgs e) 
{ 
    string s = null; 
    var current = alphaCode.Text.Length == 1 ? alphaCode.Text[0] : 'A'; 
    if (current >= 'A' && current <= 'Z') { 
     current++; 
    } else { 
     current = 'A'; 
    } 
    alphaCode.Text = "" + current; 
} 
+0

啊,這是有道理的。你的建議代碼完美運作。謝謝! – Spencer

0

您通過所有字母儘快枚舉當按鈕被按下時。基本上,你只希望每次按下一次你的角色。

private void alphaCode_Click(object sender, EventArgs e) 
{ 
    char currentChar = alphaCode.Text[0]; 

    if(currentChar == '-') 
    { 
     alphaCode.Text = "A"; 
    } 
    else 
    { 
     char newChar = currentChar + 1; 
     if(newChar > 'Z') 
     { 
      newChar = 'A'; 
     } 
     alphaCode.Text = newChar; 
    } 
} 
0

使用當前文本的ASCII碼作爲按鈕的標籤。在每次點擊時,增加它並更改文字。現在,一旦你移動了範圍(即Z),重置爲a。

你正在處理大寫和小寫?

0
 private void alphaCode_Click(object sender, EventArgs e) 
     { 
      char s = Convert.ToChar(alphaCode.Text.Trim()); 
      if (s == '-' || s == 'Z') 
      { 
       alphaCode.Text = "A"; 
      } 
      else 
      { 
       s++; 
       alphaCode.Text = s.ToString(); 
      } 
     } 
0

通過炭代碼只是環

public partial class Form1 : Form 
{ 
    private int _charCode = 65; 

    public Form1() 
    { 
     InitializeComponent(); 
     alphaCode.Text = "-"; 
    } 

    private void alphaCode_Click(object sender, EventArgs e) 
    { 
     // 90 is 'Z' 
     if (_charCode > 90) 
      _charCode = 65; 

     alphaCode.Text = ((char)_charCode).ToString(); 
     _charCode++; 
    } 
} 
0

的炭Z是第90(十進制)的ASCII表,所以當你循環直到90 + 1 = 91,並分配文本框它顯示'['這是第91個。爲了簡單起見,將一個char創建爲一個字段(在類中,而不是任何函數或過程),並且每次用戶單擊時,只需將文本框分配給當前值,然後對其進行增加。

private void alphaCode_Click(object sender, EventArgs e) 
{ 
    txtAlph.Text = currentChar.ToString(); 
    currentChar++; 
} 

然後,成爲field,只需使用一個char持有值:

char currentChar = 'A'; 
1

不依賴於當前的文本價值,適用於任何字母A液:

string const Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
int _currentCharacterIndex = -1; 

private void alphaCode_Click(object sender, EventArgs e) 
{ 
    _currentCharacterIndex = (_currentCharacterIndex +1) % Alphabet.Count; 
    alphaCode.Text = Alphabet[_currentCharacterIndex ]; 
} 

(未測試,我現在無法訪問Visual Studio)

0

將您的字符設置爲字段。每增加一個按鈕,增加c的值。如果C = Z然後再次開始A ...

char c = 'A'; 
private void button_Click(object sender, EventArgs e) { 
    if(c == 'Z'){ 
     c = 'A'; 
    } 
    label1.Text = c + ""; 
    c++; 
}