2015-09-26 59 views
0

我正在使用c#在windows窗体应用程序上工作。我对我的复选框布局列表有疑问。假设我的用户可以在组合框中选择一个包含从数据库中获取的应用程序名称列表的项目。当用户选择应用程序时,用户可以选择一个班级,并且是成绩。例如9A级,9B级,10E级。从9年级到12年级以及A到B级。我所做的是添加一堆复选框来完成它。我不确定这是否是一个很好的方法来做到这一点。这是因为当我选择一个应用程序时,哪个学生将会被选中。例如,如果我的第一个应用程序有学生可以使用该应用程序,将按照他们的成绩和班级进行检查,例如,如果9A,9B和11D年级的学生使用该应用程序,则选中方框9,11并选中成绩,以及A,B,D将从课堂上进行检查。起初我认为这是一个很好的布局,但后来我意识到用户可能会因为不知道完全匹配而感到困惑。他们可能会想:“哦,它可能是A,B,D和11年级的A,B,D”,但事实上并非如此。我不确定解决此问题的好方法。 帮助将不胜感激。谢谢。Windows窗体应用程序复选框布局

例如

Grade: 

[] 9 []10 []11 []12 
Class 

[]A []B []C []D []E 
+0

对于良好的用户界面,只有合法的选择(以及所有合法的选择)才能提供给用户。这听起来像你需要重新审视。也许在编写代码之前绘制出来。 –

+0

嗨史蒂夫,我已经画出来了,但是这是我想出的,但我不确定如何使它更具可读性 – RedRocket

+0

基于这个简单的用户界面,如果选中了9和11,并且A, B和D被检查,查询将是(9A或9B或11D)是没有意义的。 – Loathing

回答

1

也许这样的UI可能会更好:

[x]9 [x]A [x]B [x]C [ ]D [ ]E 

[ ]10 [ ]A [ ]B [ ]C [ ]D [ ]E 

[x]11 [ ]A [x]B [ ]C [ ]D [ ]E 

[x]12 [ ]A [ ]B [ ]C [ ]D [ ]E 

那么SQL语句应该是这样的:

where Grade = 9 and Class in (A, B, C) or Grade = 11 and Class in (B) or Grade = 12 

那么接下来的复选框一到E仅在相应等级被选中时才可用。

+0

谢谢,这是一个很好的答案:) – RedRocket

+0

@DragonBorn如果你在'DataGridView'中显示结果,那么你可能想看看http://www.codeproject.com/Articles/33786/DataGridView-Filter-Popup 。这样,初始SQL查询只需要一组简单的UI控件,用户可以根据需要过滤dgv。 – Loathing

+0

谢谢,我不认为我会将结果显示到DataGridView,因为我正在考虑将数据导出到Excel文件 – RedRocket