Приложение Windows Form плавает в строку - PullRequest
0 голосов
/ 05 мая 2018

Ниже приведен фрагмент моего кода, который не работает. Я хотел видеть, что он может посчитать количество пробелов в текстовом поле, поэтому мне нужно, чтобы он отображал число в окне сообщения, и в настоящее время он просто выбрасывает пустое. Проблема либо в преобразовании с плавающей точкой в ​​строку, либо в счетчике.

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

    }

1 Ответ

0 голосов
/ 05 мая 2018

То, что вы делаете, является отличным способом узнать, как и когда возникают события, и как их можно использовать для настройки поведения приложений, и похоже на то, что многие из нас сделали за эти годы.

Исходя из того, что вы говорите, вы хотите сделать, есть несколько проблем. Если вы посмотрите на этот код, он будет делать то, что вы хотите.

    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. Если вы используете эти события, вы будете рассчитывать каждый раз, когда нажимается пробел, а не количество пробелов в текстовом поле. И, как следует из их названия, события генерируются каждый раз, когда клавиша на клавиатуре поднимается вверх (нажата) и вниз (отпускается).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...