关于combobox的问题
combobox默认有5项,用户可以自己添加项。要求是程序会自动保存用户添加的项,以便程序下次启动的时候会自动加载。
我现在是这样做的:把用户添加的项保存到INI文件里,但是只实现了保存用户最后一次添加的项,请问如何实现保存所有的项?是不是必须要用到数据库啊?如果用到数据库又该怎么做呢?
[解决办法]
声明API:
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
写入INI:
Dim strIniFileName As String
Dim intI As Integer
strIniFileName = "C:\1.ini"
WritePrivateProfileString("content", "count", ComboBox1.Items.Count.ToString, strIniFileName)
For intI = 0 To ComboBox1.Items.Count - 1
WritePrivateProfileString("content", "item" & intI.ToString, ComboBox1.Items(intI), strIniFileName)
Next
读取:
Dim strIniFileName As String
Dim intI As Integer
Dim strRtn As String = Space(256)
strIniFileName = "C:\1.ini"
GetPrivateProfileString("content", "count", 0, strRtn, strRtn.Length, strIniFileName)
If strRtn.Length > 0 Then
ComboBox1.Items.Clear()
For intI = 0 To CInt(strRtn) - 1
GetPrivateProfileString("content", "item" & intI.ToString, 0, strRtn, strRtn.Length, strIniFileName)
ComboBox1.Items.Add(strRtn)
Next
End If
[解决办法]
楼上用了API ,我再给一个不用API的方法:
写入:
Dim sw As StreamWriter = New StreamWriter(My.Application.Info.DirectoryPath & "\1.ini") For intI = 0 To ComboBox1.Items.Count - 1 sw.WriteLine(ComboBox1.Items(intI).tostring()) Next sw.Flush() sw.Close()