c#按钮单击增加字母

时间:2013-12-22 19:45:26

标签: c# increment

我在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;
    }

8 个答案:

答案 0 :(得分:2)

您不需要alphaCode_Click中的循环,因为循环发生在“on 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;
}

答案 1 :(得分:1)

不依赖于当前文本值且适用于任何字母表的解决方案:

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。)

答案 2 :(得分: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;
    }
}

答案 3 :(得分:0)

使用当前文本的ASCII代码作为按钮的标记。每次单击,增加它并更改文本。现在,一旦你移动了范围(Z即),重置为。

你是处理大写还是小写?

答案 4 :(得分: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();
            }
        }

答案 5 :(得分: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++;
    }
}

答案 6 :(得分:0)

char Z是ASCII表中的第90个(dec),所以当你循环到90 + 1 = 91,并将textBox分配给它时,它会显示'[',这是第91个。为简单起见,将char创建为字段(在类中,而不是任何函数或过程),每次用户单击时,只需将文本框指定给当前值,然后递增它。

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

然后,作为field,只需使用char来保存值:

char currentChar = 'A';

答案 7 :(得分: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++;
}