Подскажите, пожалуйста, существует ли какой-нибудь стандартный (он же, поддержанный библиотеками) подход решения следующей задачи. Пытался откопать ответ в MSDN, но в результате сделал как умею.
Я считываю значение из TextBox'а (возможно нескольких)
Условия:
Проверка введенных значений на допустимость
Причем, если данные годятся, то можно нажать "OK"
В случае некорректности данных должна быть доступна кнопка "Cancel"; остальные лучше тоже недоступны, но необязательно
Я решил проблему так :
public class Form1 : System.Windows.Forms.Form
{
//...
private int ok = 0; // количество неправильных TextBox'ов
private bool prevState; // устанавливается при входе в конкретный TextBox
//...
private void textBox1_Enter(object sender, System.EventArgs e)
{
TextBox tb = (TextBox) sender;
prevState = (tb.Text == "ok");
}
private void textBox1_TextChanged(object sender, System.EventArgs e)
{
TextBox tb = (TextBox) sender;
// проверка корректности ввода
bool currState = (tb.Text == "ok");
if (currState != prevState)
{
if (currState)
ok--;
else
ok++;
prevState = currState;
btnOK.Enabled = (ok == 0);
}
}
private void Form1_Activated(object sender, System.EventArgs e)
{
ok = 0; // считаем, что данные по умолчанию на форме корректны
}
Но был и другой вариант (на мой взгляд, более красивый):
Обработать событие Validating. Если TextBox.Text не годится, то установить свойство в CancelEventArgs
e.Cancel = true,
но проблема в том, что тогда все другие элементы управления на форме становятся недоступными (само по себе даже хорошо), в том числе и кнопка Cancel. Так вот, как сделать так, чтобы "Cancel" была доступна, все остальные элементы недоступны, пока не исправлено значение в поле, и при этом не использовать дополнительных переменных?
С уважением,
Константин Дурыничев.
22.12.03 18:05: Перенесено модератором из '.NET' — AVK
Hello, kinstintin!
k> Но был и другой вариант (на мой взгляд, более красивый):
k> Обработать событие Validating. Если TextBox.Text не годится, то
k> установить свойство в CancelEventArgs e.Cancel = true,
k> но проблема в том, что тогда все другие элементы управления на форме
k> становятся недоступными (само по себе даже хорошо), в том числе и кнопка
k> Cancel. Так вот, как сделать так, чтобы "Cancel" была доступна, все
k> остальные элементы недоступны, пока не исправлено значение в поле, и при
k> этом не использовать дополнительных переменных?
k> С уважением, Константин Дурыничев.
Совйство CausesValidation у кнопки Cancel выставить в false.
Posted via RSDN NNTP Server 1.5 beta
Здравствуйте, der Igel, Вы писали:
DI>Совйство CausesValidation у кнопки Cancel выставить в false.
Спасибо

Чувствовал ведь, что просто
С уважением,
Константин Дурыничев.
Hello, kinstintin!
k> Спасибо
Чувствовал ведь, что просто
У нас тут кнопочка 'оценить' есть. Пользуйся.

Posted via RSDN NNTP Server 1.5 beta