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