我正在用C#为学校项目编写周期表。 我想这样做,以便如果我按3次(例如)H按钮,它将显示为H3。现在只能在H2下使用,我不知道为什么?欢迎您提供任何帮助,谢谢。
private void btn_H_Click(object sender, EventArgs e)
{
txt_Chemical.Text = txt_Chemical.Text + "H";
txt_Mass.Text = txt_Mass.Text + 1.006;
int count = txt_Chemical.Text.TakeWhile(c => c == 'H').Count();
if(count > 1)
{
txt_Chemical.Text = "H" + count;
txt_Mass.Text = txt_Mass.Text + 1.006 * count;
}
}
答案 0 :(得分:0)
我现在无法验证它是否为真,但是请尝试:
我认为(最多可按两次H键)可能是由于代码中的这一行所致:
int count = txt_Chemical.Text.TakeWhile(c => c == 'H').Count();
TakeWhile的工作原理-从头开始遍历列表,并在不满足谓词的第一次出现时停止。
因此,当您这样做时:
txt_Chemical.Text = "H" + count;
您的第三个字母成为计数保持的值。因此,下一次TakeWhile在第二个元素上中断为“ HH2”时。TakeWhile(c => c =='H')产生两个元素集合。
尝试使用单独的变量来保持状态(点击H的次数)。
另外:
var
之前使用int
代替count
-如果以后再更改类型会有所帮助