Reputation: 2028
I have a textbox and a button in form2. When an item is clicked in form1, form2 appears. I would like to keep the button in form2 disabled while the textbox is empty, but when user starts typing, I'd like to enable the button.
I have tried using an if in my constructor after the initialisecomponent() like so, but it does not work:
if(textbox1.text != "")
{
btnOne.Enabled = true;
}
I have also tried calling a method called checkText()
after the initialise component which uses a do-while loop to check like:
do{
btnOne.Enabled = true
}
while(textbox1.text != "");
Can anyone help?
Upvotes: 5
Views: 7506
Reputation: 48465
You need to use an event. Check out the TextChanged event for the TextBox
control.
Basically you will want something like this:
private void textbox1_TextChanged(object sender, EventArgs e)
{
btnOne.Enabled = !string.IsNullOrEmpty(textbox1.Text);
}
If you are using Visual Studio you can do the following to add the event code.
Note: This approach will require the user to "lose focus" on the TextBox
control before the event fires. If you want an as-you-type solution then check out the KeyUp event instead
@Asif has made a good point regarding checking for whitespace characters too. This is your call on what is valid, but if you do not want to allow whitespace value to be used then you can use the IsNullOrWhiteSpace method instead - however, this requires you to be using .Net Framework 4.0 or higher
Upvotes: 9
Reputation: 13150
In case you don't allow white spaces as a valid input then you should use string.IsNullOrWhiteSpace
instead of string.IsNullOrEmpty
.
textbox1.TextChanged += (sender, e)
{
btnOne.Enabled = !string.IsNullOrWhiteSpace(textbox1.Text);
};
Upvotes: 0