Где я должен положить этот код для выполнения в любое время? - PullRequest
0 голосов
/ 03 мая 2019

Ну, я хочу кнопку, которую можно нажимать, когда данные действительны, и нельзя нажимать, когда данные недействительны.Код верный и может быть запущен без проблем, но я не знаю, куда мне поместить этот код для запуска в любое время?В прошлом я помещал этот код в «защищенное переопределение void WndProc», но я столкнулся с некоторыми глюками с визуальным эффектом и не могу сохранить его там.

if (FirstName.Text == null || LastName.Text == null || Email.Text == null || Password.Text == null || Password2.Text == null || Password.Text != Password2.Text || LastName.Text == "Last Name" && FirstName.Text == "First Name" && Email.Text == "Email")
            {
                RegisterDone.Text = " You missed something";
                RegisterDone.Normalcolor = Color.FromArgb(64, 64, 64);
                RegisterDone.OnHovercolor = Color.FromArgb(64, 64, 64);
                RegisterDone.Activecolor = Color.FromArgb(64, 64, 64);
                RegisterDone.Textcolor = Color.FromArgb(197, 161, 89);
                RegisterDone.OnHoverTextColor = Color.FromArgb(197, 161, 89);
                RegisterDone.Cursor = Cursors.No;
                RegisterDone.Iconimage = Image.FromFile(@"C:\Users\gamin\Desktop\Icons\Forbidden.png");
            }
if (FirstName.Text != null && LastName.Text != null && Email.Text != null && Password.Text == Password2.Text && LastName.Text != "Last Name" && FirstName.Text != "First Name" && Email.Text != "Email")
            {
                RegisterDone.Text = "    Register right now";
                RegisterDone.Normalcolor = Color.FromArgb(4, 41, 50);
                RegisterDone.OnHovercolor = Color.FromArgb(4, 41, 50);
                RegisterDone.Activecolor = Color.FromArgb(4, 41, 50);
                RegisterDone.Textcolor = Color.FromArgb(197, 161, 89);
                RegisterDone.OnHoverTextColor = Color.FromArgb(197, 161, 89);
                RegisterDone.Cursor = Cursors.Hand;
                RegisterDone.Iconimage = Image.FromFile(@"C:\Users\gamin\Desktop\Icons\Valid.png");
            }

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

вы должны поместить этот код в FormLoad:

FirstName.TextChanged += TextBox_TextChanged;
LastName.TextChanged += TextBox_TextChanged;
Email.TextChanged += TextBox_TextChanged;
Password.TextChanged += TextBox_TextChanged;
Password2.TextChanged += TextBox_TextChanged;

и этот код в любом месте внутри формы как отдельная функция:

private void TextBox_TextChanged(object sender, EventArgs e)
{
    if (FirstName.Text == null || LastName.Text == null || Email.Text == null || Password.Text == null || Password2.Text == null || Password.Text != Password2.Text || LastName.Text == "Last Name" && FirstName.Text == "First Name" && Email.Text == "Email")
            {
                RegisterDone.Text = " You missed something";
                RegisterDone.Normalcolor = Color.FromArgb(64, 64, 64);
                RegisterDone.OnHovercolor = Color.FromArgb(64, 64, 64);
                RegisterDone.Activecolor = Color.FromArgb(64, 64, 64);
                RegisterDone.Textcolor = Color.FromArgb(197, 161, 89);
                RegisterDone.OnHoverTextColor = Color.FromArgb(197, 161, 89);
                RegisterDone.Cursor = Cursors.No;
                RegisterDone.Iconimage = Image.FromFile(@"C:\Users\gamin\Desktop\Icons\Forbidden.png");
            }
    if (FirstName.Text != null && LastName.Text != null && Email.Text != null && Password.Text == Password2.Text && LastName.Text != "Last Name" && FirstName.Text != "First Name" && Email.Text != "Email")
            {
                RegisterDone.Text = "    Register right now";
                RegisterDone.Normalcolor = Color.FromArgb(4, 41, 50);
                RegisterDone.OnHovercolor = Color.FromArgb(4, 41, 50);
                RegisterDone.Activecolor = Color.FromArgb(4, 41, 50);
                RegisterDone.Textcolor = Color.FromArgb(197, 161, 89);
                RegisterDone.OnHoverTextColor = Color.FromArgb(197, 161, 89);
                RegisterDone.Cursor = Cursors.Hand;
                RegisterDone.Iconimage = Image.FromFile(@"C:\Users\gamin\Desktop\Icons\Valid.png");
            }
}

другое дело, что вы говорите, что ваш кодработает, но я не уверен, что любое textbox.Text может быть нулевым.и, возможно, вам нужно изменить его на

textbox.Text == "";

или, если вы все еще хотите предотвратить использование null:

string.IsNullOrWhiteSpace(textbox.Text);
0 голосов
/ 03 мая 2019

// зарегистрировать событие во всех текстовых полях, которые вы хотите проверить

LastName.TextChanged += new EventHandler(textbox_TextChanged); FirstName.TextChanged += new EventHandler(textbox_TextChanged); private void textbox_TextChanged(object sender, EventArgs e) { //call your validation code here. }

Вы можете использовать другое событие, если хотите «Потерянный фокус», «KeyUp» и т. Д.

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