我如何不断检查多个字段是否有输入,并且一旦所有字段都有输入启用按钮?或者就像
一样简单if( textbox1.text && textbox2.text && textbox3.text && ...){button1.isEnabled = true;}
是否有一个像Unity一样的更新方法来检查更改?
答案 0 :(得分:2)
您可以将所有文本框链接到同一个TextChanged
事件,然后评估它们以查看是否所有文本框都已完成。
private void textBoxes_TextChanged(object sender, EventArgs e)
{
EnableButton();
}
private void EnableButton()
{
button1.Enabled = !Controls.OfType<TextBox>().Any(x => string.IsNullOrEmpty(x.Text));
}
答案 1 :(得分:1)
你必须使用命令模式,它应该是这样的 -
您的命令类 -
public class RelayCommand : ICommand
{
private Action<object> _execute;
private Func<object, bool> _canExecute;
public RelayCommand(Action<object> execute, Func<object,bool> canExecute)
{
_execute = execute;
_canExecute = canExecute;
}
public void Execute(object parameter)
{
_execute(parameter);
}
public bool CanExecute(object parameter)
{
return _canExecute(parameter);
}
public event EventHandler CanExecuteChanged
{
add
{
if (_canExecute != null)
{
CommandManager.RequerySuggested += value;
}
}
remove
{
if (_canExecute != null)
{
CommandManager.RequerySuggested -= value;
}
}
}
}
您的按钮代码 -
<Button Content="Click Me" Command="{Binding ButtonCommand}"/>
您的命令属性 -
public ICommand EnabledCommand { get; set; }
在你的构造函数中 -
ButtonCommand = new RelayCommand(ButtonCommandHandler, CanClick);
您的命令处理程序 -
private void ButtonCommandHandler(object obj)
{
// Do what ever you wanna
}
你可以执行处理程序 -
private bool CanClick(object arg)
{
return textbox1.Text.Trim().Length > 0 && textbox2.Text.Trim().Length > 0;
}