我想将两个颜色(如蓝色和红色)从CheckBoxList发送到一个方法,该方法需要4个可选参数并打印最终的组合结果。
这是复选框列表:
Choose Two Colors:
<asp:CheckBoxList ID="CheckBoxList1" runat="server" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged">
<asp:ListItem>Red</asp:ListItem>
<asp:ListItem>Blue</asp:ListItem>
<asp:ListItem>Yellow</asp:ListItem>
<asp:ListItem>Green</asp:ListItem>
</asp:CheckBoxList>
这是一个需要4个可选参数的方法:
static string ColorMixer(string Blue = "NotDefined", string Yellow = "NotDefined", string Red = "NotDefined",
string Green = "NotDefined")
{
string blue = Blue;
string yellow = Yellow;
string red = Red;
string green = Green;
string results;
if (blue.Equals("Blue")&&yellow.Equals("Yellow"))
{
results = "GREEN";
return results;
}
if (red.Equals("Red")& green.Equals("Green"))
{
results = "Brown";
return results;
}
the rest of codes goes here ....
else
{
results = "Result is Unspecified";
}
return results;
}
现在当有人从Checkboxlist中选择两种颜色时,我希望得到两种颜色,代码如下:
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected)
{
string selectedoptions;
selectedoptions = item.Text;
}
}
}
然后将选定的字符串项作为命名参数发送到方法
我们如何从字符串“selectedoptions”中获取所选颜色,然后将其格式化为?
ColorMix(Blue:"Blue",Red:"Red")
用户选择“蓝色”和“红色”的颜色。
答案 0 :(得分:0)
这不是ASP.Net,但我很确定这同样适用。我不认为你正在使用正确的事件来做你想做的事情。每次用户点击CheckBoxList1_SelectedIndexChanged
并更改选中的项目时,都会触发事件CheckBoxList
。即使没有更改复选框,事件也会触发。当然,您可以执行此处需要执行的操作,例如选中要检查的复选框并将某些变量传递给方法,但是每次用户更改选择时都会执行此操作。
我猜一个按钮可以更好地控制你的颜色方法。这样,在按下此按钮之前,您不会循环遍历项目。然后,您可以遍历列表并获取选中的颜色。如果仅检查一(1)种颜色或三种或更多颜色,则不清楚您想要做什么,因为帖子表明您只想传递两种颜色。
下面(c#代码)是我与CheckedListBox
一起使用的代码,其中项目被命名为红色,蓝色,绿色和黄色。我使用Button_Click
事件而不是CheckBoxList1_SelectedIndexChanged
事件。按下按钮时,它只是遍历列表并显示项目索引,名称及其检查状态。
private void button1_Click(object sender, EventArgs e) {
// Make a list of the checked colors you want to pass
//List<string> checkedItems = new List<string>();
int index;
foreach (string item in checkedListBox1.Items) {
index = checkedListBox1.Items.IndexOf(item);
string checkState = checkedListBox1.GetItemCheckState(index).ToString();
MessageBox.Show("Item on line " + index + " name: " + item +
" is currently: " + checkState);
}
}
希望这有帮助!