我以编程方式创建了一个Form
,其中包含两个textboxes
。如果我在第二个中输入内容并且相反,我的目标是禁用一个textbox
。我设法在第一个textbox
textchange上禁用第二个textbox
,但无法确定在第一个textbox
。文本为空时如何启用它。
以下是代码:
private void metaName_TextChanged(object sender,EventArgs e)
{
var ctrl = (Control)sender;
var frm = ctrl.FindForm();
TextBox metaTxt = null;
foreach (var ctr in frm.Controls)
{
if (ctr is TextBox)
{
metaTxt = (TextBox)ctr;
if (metaTxt.Name == "metaHTTPEquiv")
{
metaTxt.Enabled = false;
}
else
if (?)
{
}
}
}
}
我想做这样的事情:
if(textBox3.Text == String.Empty)
{
textBox4.Enabled = true;
}
else
if(textBox3.Text != String.Empty)
{
textBox4.Enabled = false;
}
答案 0 :(得分:3)
您只能检查每个的textchanged事件,如下所示:
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox2.Enabled = !(textBox1.Text.Length >= 1);
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
textBox1.Enabled = !(textBox2.Text.Length >= 1);
}
自我文本框有一些值,然后另一个
的启用将为false答案 1 :(得分:2)
首先设置一个标志,根据提升事件的metaName文本框的内容启用或禁用第二个控件,然后使用一点Linq搜索第二个文本框。
private void metaName_TextChanged(object sender,EventArgs e)
{
TextBox ctrl = sender as TextBox;
if(ctrl != null)
{
bool enable = !string.IsNullOrEmpty(ctrl.Text);
TextBox secondOne = this.Controls
.OfType<TextBox>()
.FirstOrDefault(x => x.Name == "metaHTTPEquiv");
if(secondOne != null)
secondOne.Enabled = enable;
}
}
反转文本框角色的相同代码可以用作第二个文本框的事件处理程序。
答案 2 :(得分:0)
忘记控制事件并使用数据绑定。
采取以下帮助方法
static void Bind(Control target, string targetProperty, object source, string sourceProperty, Func<object, object> expression)
{
var binding = new Binding(targetProperty, source, sourceProperty, true, DataSourceUpdateMode.Never);
binding.Format += (sender, e) => e.Value = expression(e.Value);
target.DataBindings.Add(binding);
}
并在表单加载事件中添加类似的内容
Bind(textBox2, "Enabled", textBox1, "Text", value => string.IsNullOrEmpty((string)value));