在做学生管理系统的时候,在设置年级课程信息的窗体中,每点击“设置课程”键,就会重复添加一次,不管该课程是否存在。而添加键也是存在这样的问题。这个问题该怎样解决?
就这个问题,我从listbox的属性入手,不要求里listbox的属性都要求你都知道。最起码这个用到的都要知道。在这里我觉得就像米老师说的,在我们学习vb入门的时候,我们不必所有的都弄懂,所有的都记住。我们只有知道有这样的一个类,它叫listbox,当我们遇到它的时候,查就可以了。毕竟,百度比我们的记忆好的多,知道的多。
要解决这个问题,listbox的additem、removeitem方法要了解,listindex和listcount属性必须知道。
简单一点说:additem是将项添加到列表框中的。
removeitem是将项从列表框中删除的。
listindex返回的是列表框list中当前选择项目的索引号码。
listcount返回的是列表框list中项目总数。
知道了这些,那么就看代码很清楚了:
Private Sub cmdSet_Click() '“设置课程”按钮 Dim mrc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String '使控件有效 listAllcourse.Enabled = True listSelectcourse.Enabled = True cmdModify.Enabled = True txtSQL = "select * from course_Info " Set mrc = ExecuteSQL(txtSQL, MsgText) '显示所有课程 While (mrc.EOF = False) '遍历记录方法2 listAllcourse.AddItem mrc.Fields(1) mrc.MoveNext Wend mrc.Close flagSet = True End Sub
这段代码的运行结果是:
那么我们要修改它,就要从while wend 段中修改,具体方法:
While (mrc.EOF = False) '遍历记录方法2 If listAllcourse.ListCount <> mrc.RecordCount Then listAllcourse.AddItem mrc.Fields(1) End If mrc.MoveNext Wend mrc.Close
另外,还有添加键的设置,原代码是这样的:
Private Sub cmdAdd_Click() If listAllcourse.ListIndex <> -1 Then listSelectcourse.AddItem listAllcourse.List(listAllcourse.ListIndex) End If End Sub
运行结果:
改过之后是这样的:
Private Sub cmdAdd_Click() Dim I As Integer If listAllcourse.ListIndex <> -1 Then If listSelectcourse.ListCount = 0 Then listSelectcourse.AddItem listAllcourse.List(listAllcourse.ListIndex) End If For I = 0 To listSelectcourse.ListCount - 1 If listSelectcourse.List(I) = listAllcourse.List(listAllcourse.ListIndex) Then Exit Sub End If Next listSelectcourse.AddItem listAllcourse.List(listAllcourse.ListIndex) End If End Sub
里面涉及到一些逻辑问题,可以用F8键,进行调试,这样,你就知道,你的哪一步错了。
我个人认为:改正这个错误,不单单是锻炼我们调试能力和对list类的认识,更重要的是我们的一种学习习惯问题,道理就是在我们学习vb入门的时候,我们不必所有的都弄懂,所有的都记住。我们只有知道有这样的一个类,它叫listbox,当我们遇到它的时候,查就可以了。毕竟,百度比我们的记忆好的多,知道的多。