C# 验证布尔条件时出错
我在面板上添加了一个usercontrol,并将usercontrol中的combobox属性设置为public,我想验证这一点,但每次单击按钮时,它都会显示表单。问题是,当我通过一个按钮动态添加多个组合框时,如何进行验证C# 验证布尔条件时出错,c#,C#,我在面板上添加了一个usercontrol,并将usercontrol中的combobox属性设置为public,我想验证这一点,但每次单击按钮时,它都会显示表单。问题是,当我通过一个按钮动态添加多个组合框时,如何进行验证 bool tat; public bool val2() { foreach (Control item in panel1.Controls.OfType<ComboBox>()) { if (item.Text == strin
bool tat;
public bool val2()
{
foreach (Control item in panel1.Controls.OfType<ComboBox>())
{
if (item.Text == string.Empty)
{
tat = true;
}
else
{
tat = false;
}
}
return tat;
}
private void button2_Click(object sender, EventArgs e)
{
bool valo = val2();
if (!valo)
{
Form4 fp = new Form4();
fp.Show();
}
else
{
MessageBox.Show("error");
}
}
bool-tat;
公共布尔值2()
{
foreach(panel1.Controls.OfType()中的控件项)
{
if(item.Text==string.Empty)
{
tat=真;
}
其他的
{
tat=假;
}
}
返回tat;
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
bool-valo=val2();
如果(!valo)
{
Form4 fp=新的Form4();
fp.Show();
}
其他的
{
MessageBox.Show(“错误”);
}
}
每次通过循环时,您所做的是覆盖tat
的值,例如:
ComboBox1 "Hello" tat = false
ComboBox2 Empty tat = true
ComboBox3 "World" tat = false again!
Return: false
如果任何组合框为空,我假设您希望返回true;您可以按如下方式修改您的函数:
public bool val2()
{
foreach (Control item in panel1.Controls.OfType<ComboBox>())
{
if (item.Text == string.Empty)
{
// We know one is empty so we must return true.
return true;
}
}
// We know none are empty so we can return false.
return false;
}
因此,type行的现在正在挑选您的自定义用户控件,Select
行获取您的一个用户控件并找到组合框
,而Any
行检查它们是否都有值
原始风格的备选方案:
public bool val2()
{
foreach (YourCustomUserControlType item in
panel1.Controls.OfType<YourCustomUserControlType>())
{
ComboBox cb = item.NameOfYourComboBox;
if (cb.Text == string.Empty)
{
// We know one is empty so we must return true.
return true;
}
}
// We know none are empty so we can return false.
return false;
}
public bool val2()
{
foreach(中的YourCustomUserControlType项
panel1.Controls.OfType())
{
ComboBox cb=您的ComboBox的item.name;
if(cb.Text==string.Empty)
{
//我们知道其中一个是空的,所以我们必须返回true。
返回true;
}
}
//我们知道没有一个是空的,所以我们可以返回false。
返回false;
}
每次通过循环时,您所做的是覆盖tat
的值,例如:
ComboBox1 "Hello" tat = false
ComboBox2 Empty tat = true
ComboBox3 "World" tat = false again!
Return: false
如果任何组合框为空,我假设您希望返回true;您可以按如下方式修改您的函数:
public bool val2()
{
foreach (Control item in panel1.Controls.OfType<ComboBox>())
{
if (item.Text == string.Empty)
{
// We know one is empty so we must return true.
return true;
}
}
// We know none are empty so we can return false.
return false;
}
因此,type
行的现在正在挑选您的自定义用户控件,Select
行获取您的一个用户控件并找到组合框
,而Any
行检查它们是否都有值
原始风格的备选方案:
public bool val2()
{
foreach (YourCustomUserControlType item in
panel1.Controls.OfType<YourCustomUserControlType>())
{
ComboBox cb = item.NameOfYourComboBox;
if (cb.Text == string.Empty)
{
// We know one is empty so we must return true.
return true;
}
}
// We know none are empty so we can return false.
return false;
}
public bool val2()
{
foreach(中的YourCustomUserControlType项
panel1.Controls.OfType())
{
ComboBox cb=您的ComboBox的item.name;
if(cb.Text==string.Empty)
{
//我们知道其中一个是空的,所以我们必须返回true。
返回true;
}
}
//我们知道没有一个是空的,所以我们可以返回false。
返回false;
}
问题在于您正在为每个组合框决定val2
的值。最后一个组合框可能有一个值,因此显示的是表单而不是消息框。。如果仅当所有组合框都选择了值时才希望结果为true
,则需要采用如下解决方案:
假设所有组合框都有选定的值。只要只有一个没有值,就返回true
public bool val2()
{
foreach (Control item in panel1.Controls.OfType<ComboBox>())
{
if (String.IsNullOrEmpty(item.Text))
return true;
}
return false;
}
private void button2_Click(object sender, EventArgs e)
{
bool valo = val2();
if (!valo)
{
Form4 fp = new Form4();
fp.Show();
}
else
{
MessageBox.Show("error");
}
}
public bool val2()
{
foreach(panel1.Controls.OfType()中的控件项)
{
if(String.IsNullOrEmpty(item.Text))
返回true;
}
返回false;
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
bool-valo=val2();
如果(!valo)
{
Form4 fp=新的Form4();
fp.Show();
}
其他的
{
MessageBox.Show(“错误”);
}
}
问题在于您正在为每个组合框决定val2
的值。最后一个组合框可能有一个值,因此显示的是表单而不是消息框。。如果仅当所有组合框都选择了值时才希望结果为true
,则需要采用如下解决方案:
假设所有组合框都有选定的值。只要只有一个没有值,就返回true
public bool val2()
{
foreach (Control item in panel1.Controls.OfType<ComboBox>())
{
if (String.IsNullOrEmpty(item.Text))
return true;
}
return false;
}
private void button2_Click(object sender, EventArgs e)
{
bool valo = val2();
if (!valo)
{
Form4 fp = new Form4();
fp.Show();
}
else
{
MessageBox.Show("error");
}
}
public bool val2()
{
foreach(panel1.Controls.OfType()中的控件项)
{
if(String.IsNullOrEmpty(item.Text))
返回true;
}
返回false;
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
bool-valo=val2();
如果(!valo)
{
Form4 fp=新的Form4();
fp.Show();
}
其他的
{
MessageBox.Show(“错误”);
}
}
动态添加组合框时,text
属性是否已填充?当然,如果将combobox添加到usercontrol并设置为public,则它将具有text属性。这样,您将永远不会将text
值设置为空,因为它将始终返回false
。当您动态添加combobox
时,text
属性是否已填充?当然,如果将combobox添加到usercontrol并设置为public,则它将具有text属性。然后,您将永远无法将text
值设为空,因为它将始终返回false
。单击按钮时,您的解决方案也将打开表单,表示工作不正常,int c=0;私有空隙ButnOn1Couter(对象发送器,EngEngsE){int V;VC++=C++;PANEL1.VistaCaldLo.ValueVistaLoCur.Mulax;USER CONDULUS =新USENCONDENTRONE();U.Name=“US”+V;US。位置=新点(150, 5 +(30×V));panel1.Controls.Add(us);}我用这段代码添加了用户控件,这可以用你的代码验证吗?啊,等等<代码>面板1。控件
将返回面板的直接子项,但您的下拉列表似乎更深入。我将编辑我的答案。
类型的是一种LINQ方法。如果有帮助的话,我也可以更新我的非LINQ代码;只需在可访问的地方定义regex
(例如在val2()
的开头,并将cb.Text==String.Empty
替换为!regex.IsMatch(cb.Text)
。regex只允许一个字符