我的checkBox必须是输入参数,事件不是解决方案(我知道如何处理事件)。
我的wf看起来像这样:
抱歉,这不是英语,但没关系,我会解释。我在这个第一组框中有四个复选框(“Načinunosa”:“Kraj dana”是checkBox1,“Pozadinski unos”是checkBox2,“Dopuna”是checkBox3,“Odložen在线”是checkBox4)。当我点击按钮Pretraga(它是搜索按钮)时,我有一些行是可以的,但我不知道如何键入关于复选框的代码。
我知道它只能用两个checkBoxex,
private void btnPretraga_Click(object sender, EventArgs e)
{
//some code before checkBoxes
string nacinUnosa;//this is input parameter
if((checkBox1.Checked = true) && (checkBox2.Checked = true))
{
nacinUnosa = "%":
}
if((checkBox1.Checked = true) && (checkBox2.Checked = false))
{
nacinUnosa = "1"
}
if((checkBox1.Checked = false) && (checkBox2.Checked = true))
{
nacinUnosa = "2"
}
//and so on...
}
但我不知道这是如何使用四个chechBoxex ...必须有另一种方式。有什么想法吗?
答案 0 :(得分:2)
您想检查所有复选框上的checkedstatus吗?
首先,我认为您需要在if语句中使用2 =
if(checkBox1.Checked == true)
我认为唯一的方法是制作更大的if
s
我认为if / else结构在这种情况下不是一个坏主意。
像这样:if(checkBox1.Checked && checkBox2.Checked && checkBox3.Checked && checkBox4.Checked)
{
}
else if(!checkBox1.Checked && checkBox2.Checked && checkBox3.Checked && checkBox4.Checked)
{
}
...
并为所有的可能性(这很多,真实)重复这个
答案 1 :(得分:2)
对此的一个解决方案是将它们分成不同的部分,如下所示:
if(checkBox1.Checked)
{
if(checkBox2.Checked)
{
nacinUnosa = "%";
}
else
{
}
}
//And so on
如果你希望减小if语句的大小而不像这样分割它们,你也可以使用单行if语句,如
nacinUnosa = (checkBox1.Checked && checkBox2.Checked) ? "%" : checkBox1.Checked ? "1" : checkBox2.Checked ? "2" : "0";
这样做的一个好处是,您仍然可以通过拆分将其设置为看起来,就像它是一个多行语句一样。因此,这是具有更好格式的完全相同的代码
nacinUnosa =
(checkBox1.Checked && checkBox2.Checked)
? "%"
: checkBox1.Checked
? "1"
: checkBox2.Checked
? "2"
: "0";
完整代码
nacinUnosa =
(checkBox1.Checked && checkBox2.Checked && checkBox3.Checked && checkBox4.Checked)
? "%"
: (checkBox1.Checked && checkBox2.Checked && checkBox3.Checked)
? "123"
: (checkBox1.Checked && checkBox2.Checked && checkBox4.Checked)
? "124"
: (checkBox1.Checked && checkBox3.Checked && checkBox4.Checked)
? "134"
: (checkBox2.Checked && checkBox3.Checked && checkBox4.Checked)
? "234"
: (checkBox1.Checked && checkBox2.Checked)
? "12"
: (checkBox1.Checked && checkBox3.Checked)
? "13"
: (checkBox1.Checked && checkBox4.Checked)
? "14"
: (checkBox2.Checked && checkBox3.Checked)
? "23"
: (checkBox2.Checked && checkBox4.Checked)
? "24"
: (checkBox3.Checked && checkBox4.Checked)
? "34"
: (checkBox1.Checked)
? "1"
: (checkBox2.Checked)
? "2"
: (checkBox3.Checked)
? "3"
: (checkBox4.Checked)
? "4"
: "0";
如何在将来解决这个问题
你可以通过使用组合学来解决这个问题,这可以让你知道每组中有多少种可能性,当你检查了4个复选框时,可能性只有4C4,等于1.当你移动时在它上面变成4C3(等于4),4C2(它是6)和4C1,它是4.结果,应该有15个结果,以及当没有勾选时的额外结果!
答案 2 :(得分:1)
您可以使用标记或数组轻松完成您尝试实现的目标。
我确实已经在Alfie Goodacre his answer上阅读了您的评论,您可以将其保持在简单的地方:
//Instead of storing it in a string, we use a list of strings
nacinUnosa = List<string>();
//Just check each checkbox once...
if (checkBox1.Checked)
nacinUnosa.push("1");
if (checkBox2.Checked)
nacinUnosa.push("2");
if (checkBox3.Checked)
nacinUnosa.push("3");
if (checkBox4.Checked)
nacinUnosa.push("4");
//Now we have a full list with all the active checkboxes.. For the query, we can do something like:
var query = "SELECT * FROM Clothes WHERE ";
for (var i = 0; i < nacinUnosa.length; i++) {
//Create your sql query code here.. Something like:
if (i != 0)
query += " OR " ;
nacinUnosa = " + nacinUnosa[i] " ;
}
答案 3 :(得分:0)
你的所有答案都是正确的。另一种方式:
string nacinUnosa = "";
if (checkBox1.Checked) nacinUnosa = "1";
if (checkBox2.Checked) nacinUnosa = nacinUnosa + "2";
if (checkBox3.Checked) nacinUnosa = nacinUnosa + "3";
if (checkBox4.Checked) nacinUnosa = nacinUnosa + "4";
查询可以这样工作:
SELECT d.nacin_unosa, ....//nacin_unosa is column in table
FROM DNEVNIK d, ... //DNEVNIK is table
WHERE P_NACIN_UNOSA like ('%'||d.nacin_unosa||'%') // P_NACIN_UNOSA is input parameter
谢谢你的回答...... :)