简体   繁体   English

我应该把这些代码放在哪里随时执行?

[英]Where should i put these code to be executed anytime?

Well, i want a button that can be clicked when data is valid and can't be clicked when data is invalid.嗯,我想要一个按钮,当数据有效时可以点击,当数据无效时不能点击。 The code is correct and can be ran without any problems but i don't know where should i put this code to trigger any time ?代码是正确的,可以毫无问题地运行,但我不知道我应该把这段代码放在哪里随时触发? In the past i put this code in the "protected override void WndProc" but i ran into some glitches with visual and can't keep it in there.过去,我将此代码放在“受保护的覆盖无效 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");
            }

you should put this code on FormLoad:你应该把这个代码放在 FormLoad 上:

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

and that code any where inside the form as separate function:并将表单内的任何位置编码为单独的函数:

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

another thing is that you say that your code works but i am not sure that any textbox.Text can be null.另一件事是你说你的代码有效,但我不确定任何 textbox.Text 可以为空。 and maybe you need to change it to也许你需要把它改成

textbox.Text == "";

or if you still want to prevent null use:或者如果您仍然想防止使用空值:

string.IsNullOrWhiteSpace(textbox.Text);

//register event to all textboxes that you want to check //向所有要检查的文本框注册事件

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. }

You can use other event if you want "Lost focus", "KeyUp" etc..如果您想要“失去焦点”、“KeyUp”等,您可以使用其他事件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM