c #: TextChanged проверяет только 4 из моего NUD, остальные не работают - PullRequest
0 голосов
/ 24 января 2011

У меня есть форма с несколькими элементами управления NumericUpDown, которую я хочу, чтобы они запускали функцию каждый раз, когда пользователь вводит в них данные.Я изменил события ValueChanged на TextChanged для всех из них, но только 4 из событий NUD.TextChanged работают, все остальные действуют как событие ValueChanged (даже несмотря на то, что я искал все решения, и нет никакого упоминания о ValueChangedСОВСЕМ).Я скопировал один из работающих элементов управления NUD и вставил его.Переименовал его, настроил события, и они просто не работают должным образом.

Они запускаются на TextChanged, но не проверяют значение.

Например: максимум 100, минимум 1, яввод 200, он остается равным 200, пока я не покину элемент управления, затем он устанавливает его обратно на 100;

На том, который работает нормально, как только я введу 2, и это приведет к переходу на 200, при возникновении события TextChanged оно становится равным 100.

Я проверил, что для каждого из них свойство "CausesValidation" установлено в значение true.

Я был на этом более 4часов сейчас, и это становится немного разочаровывающим ... до такой степени, что я думаю о воссоздании формы с нуля со всеми более чем 70 элементами управления ...

РЕДАКТИРОВАТЬ:

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

Я могу исправить это для каждого элемента управления, добавив его вTexМетод события tChanged:

 private void NUD_ValueOfF_TextChanged(object sender, EventArgs e)
        {
            if (NUD_ValueOfF.Value > NUD_ValueOfF.Maximum)
                NUD_ValueOfF.Value = NUD_ValueOfF.Maximum;
            CalculateAll();
        }

Но, как вы, вероятно, можете себе представить, это беспорядок и довольно неудобно делать это для более чем 30 NUD, все по одному.Кроме того, я хочу понять, почему он работает нормально для 4 из NUD и не работает для остальных, я просто не понимаю этого.Я сделал то же самое для всех них.Все остальные формы NUD работают нормально.Только те, кто в этой форме, не хотят работать должным образом.

edit2:

Обработчик событий и дизайн кнопок (абсолютно одинаковые для тех, кто работает, и тех, которые не работают:

    // 
    // NUD_ValueOfF
    // 
    this.NUD_ValueOfF.Font = new System.Drawing.Font("Calibri", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    this.NUD_ValueOfF.Increment = new decimal(new int[] {
    1000,
    0,
    0,
    0});
    this.NUD_ValueOfF.Location = new System.Drawing.Point(219, 56);
    this.NUD_ValueOfF.Maximum = new decimal(new int[] {
    1000000000,
    0,
    0,
    0});
    this.NUD_ValueOfF.Name = "NUD_ValueOfF";
    this.NUD_ValueOfF.Size = new System.Drawing.Size(120, 27);
    this.NUD_ValueOfF.TabIndex = 172;
    this.NUD_ValueOfF.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
    this.NUD_ValueOfF.Value = new decimal(new int[] {
    140000,
    0,
    0,
    0});
    this.NUD_ValueOfF.TextChanged += new System.EventHandler(this.NUD_ValueOfF_TextChanged);

Я был бы очень признателен, если бы кто-нибудь мог мне помочь.

Спасибо

BR,

Lifebringr

1 Ответ

0 голосов
/ 25 января 2011

Я просто решил это !!!!

Я только что обнаружил, что один из методов, которые он вызывал с помощью метода TextChanged, пытался обновить один из блоков перед созданием переменной для него. Просто изменили его в коде, и вдруг все блоки NUD, которые не работали должным образом, работают нормально !!!!!!!!

Спасибо тем, кто пытался.

РЕДАКТИРОВАТЬ:

ЭТО на самом деле не решено, я просто добавил this.focus (); к методу, который вызывается всеми TextChanged, чтобы он проверял значение min / max и устанавливал правильное значение перед вызовом других методов ... хотя он работает так, как мне нужно, чтобы работать, поэтому я доволен этим

БЗ,

Lifebringr

...