我的Windows应用程序中有一个名为“Continuous”的复选框。当用户检查并单击“处理”按钮时,应用程序将处理listBox中的所有项目。但是,如果用户未选中此框,则只会处理列表中的第一个。
在我的Process方法中,我想写一个if条件来检查checkBox并检查checkach循环,否则只执行第一项。
这是我的代码
private void btnProcess_Clicl()
{
bool bDone = false;
while(!bDone)
{
LoadList(); //This will load the list from database into listBox
if(listBox.items.Count > 0)
{
ProcessList();
}
if(!chkBox.Checked)
bDone = true;
}
}
我已经在ProcessList()方法中实现了foreach循环来处理列表。无论如何,如果用户检查连续的checkBox,是否可以避免执行LoadList()方法? LoadList()将从数据库中填充listBox。
答案 0 :(得分:2)
做这样的事情
if( chkBox.Checked )
ProcessList();
else
ProcessOne();
编写功能以执行您想要的操作
<强>更新强>
为避免重复处理代码,您可以执行类似
的操作public void ProcessList()
{
foreach( var item in list )
ProcessOne( item );
}
答案 1 :(得分:2)
保理是你的朋友。
void ProcessList(int start, int count) {
for (int i=start; i < start + count; i++) {
ProcessItem(i);
}
}
void ProcessItem(int i) { // your code here
}
private void btnProcess_Click() {
if (IsContinuous) {
ProcessList(0, list.Count);
}
else {
ProcessItem(0);
}
}
private bool IsContinuous { get { return chkBox.Checked; } }
这对你有用,但我不是特别喜欢它,因为我认为Process应该是列表数据结构本身的一部分而不是我的UI。模型(和视图)和控制应该是分开的(如果可能的话)。
答案 2 :(得分:1)
Boolean doAllItems = chkBox.Checked;
foreach(Object something in collection)
{
DoWork(something);
if(!doAllItems)
break;
}