以下是我的一些代码,它不起作用。我想看到它可以计算文本框中的空格数,所以我让它在消息框中显示数字,它当前只是抛出一个空白的。问题在于浮点到字符串转换或在计数器中。
private static string _globalVar = "n";
public static string GlobalVar
{
get { return _globalVar; }
set { _globalVar = value; }
}
public Form1()
{
InitializeComponent();
button1.Text = "Enter";
}
string LNum { get; set; }
public void button1_Click_1(object sender, EventArgs e)
{
MessageBox.Show(LNum);
}
public void richTextBox1_TextChanged(object sender, System.Windows.Forms.KeyEventArgs e)
{
float n = 0;
if (Control.ModifierKeys == Keys.Space)
{
n = n + 1; ;
}
string.Format("{0:N1}", n);
string LNum = Convert.ToString(n);
}
答案 0 :(得分:1)
您所做的是了解事件如何以及何时被提出以及如何利用它们来定制应用程序行为的绝佳方式,这与我们许多人多年来所做的类似。
根据您所说的想要做的事情,有几个问题。如果您看一下这段代码,它会做你想要的。
public void button1_Click(object sender, EventArgs e)
{
int n = 0;
for (int counter = 0; counter < richTextBox1.TextLength; counter++)
{
if (richTextBox1.Text[counter] == ' ')
{
n++;
}
}
MessageBox.Show(n.ToString("N1"));
}
关键区别在于我只在单击按钮时查看输入的文本。 (每次显示的文本发生更改时都会运行TextChanged)。我选择不使用float
变量来存储空格的数量,因为计数总是一个整数。
此外,TextChanged System.Windows.Forms.KeyEventArgs e
的参数不正确,如果正确绑定到TextChanged
事件,则永远不会编译。
KeyEventArgs
和KeyUp
事件使用KeyDown
参数。如果您使用这些事件,则每次按下空格键时都会计数,而不是文本框中的空格数。就像他们的名字所暗示的那样,每当键盘上的键上升(按下)和下降(释放)时,事件就会被提升。