读取表单上所有控件的文本属性
问题描述:
如何阅读表单上所有文本框和控件框的所有文本属性?
Wy做了如果不起作用?
Hi,
How can I read all the text properties of all the textboxes and controlboxes on my form?
Wy does the folowing not work?
For Each cntrl In Me.Controls
If TypeOf cntrl Is TextBox Or TypeOf cntrl Is ComboBox Then
FileString &= cntrl.Text & ","
End If
Next
或者:
我可以在我的代码中轻松插入控件的名称(我有大约30个控件)。它们是文本框和组合框的混合体。我想使用所选文本来构建一个commma分隔字符串。
亲切问候,
Alternatively:
Can I easely insert the names of the controls in my code (I have about 30 controls). They are a mix of textboxes and comboboxes. I want to use the selected text to build a commma seperated string.
Kind regards,
答
嗨Gert,
试试这个:
Hi Gert,
Try this :
For Each cntrl In Me.Controls
If TypeOf cntrl Is TextBox Then
FileString &= cntrl.Text & ","
End If
If TypeOf cntrl Is ComboBox Then
FileString &= cntrl.SelectedValue.ToString & ","
End If
Next
BR,
VG
BR,
VG
抱歉,评论无法显示整个代码。 />
也许这有帮助。
sorry, the comment could not show the entire code.
Maybe this helps.
Imports Microsoft.Office.Interop
Imports System.IO 'Required for StreamReader & StreamWriter
Public Class appointmentcreator_form
Dim myReader As StreamReader
Dim myWriter As StreamWriter
Dim listPreset As New List(Of String)
Dim PresetName As String
Private Sub appointmentcreator_form_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
My.Settings.Reload()
Preset_naamComboBox.Items.Add("<save as="" preset="">")
Call ReadData()
SaveFileDialog1.DefaultExt = "txt"
cbxPeriodDays.SelectedIndex() = 0
cbxPeriodHr.SelectedIndex() = 0
cbxPeriodMin.SelectedIndex() = 0
CbxdaysAfterFirst.SelectedIndex() = 0
cbxHrAfterFirst.SelectedIndex() = 0
cbxMinAfterFirst.SelectedIndex() = 0
cbxStartMin.SelectedIndex() = 0
cbxStartHr.SelectedIndex() = 0
tbxSubject.Focus()
End Sub
Private Sub Preset_naamComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Preset_naamComboBox.SelectedIndexChanged
If Preset_naamComboBox.SelectedIndex = 0 Then
'Ask for Preset Name
Again: PresetName = InputBox("Name Your PreSet then click OK", "Preset", "Preset#1", 300, 200)
If PresetName = "" Or PresetName.Contains(",") Then
MsgBox("Invalid Preset Name!" & vbCrLf & "Re-Enter Name!")
GoTo Again
Else
Preset_naamComboBox.Items.Add(PresetName)
Call SaveData(PresetName)
End If
Else
'Get Preset Values and load in TextBoxes
PresetName = CStr(Preset_naamComboBox.Items.Item(Preset_naamComboBox.SelectedIndex))
Dim txtLine() As String = Split(listPreset.Item(Preset_naamComboBox.SelectedIndex - 1), ",")
Dim index As Integer = 1
For Each cntrl In Me.Controls
If TypeOf cntrl Is TextBox Or TypeOf cntrl Is ComboBox Then
cntrl.text = txtLine(index)
index += 1
End If
Next
End If
End Sub
Sub ReadData()
If My.Settings.Filepath <> "" Then
If My.Computer.FileSystem.FileExists(My.Settings.Filepath) = True Then
myReader = New StreamReader(My.Settings.Filepath)
Dim myText = myReader.ReadLine
While myText IsNot Nothing
listPreset.Add(myText)
myText = myReader.ReadLine
End While
myReader.Close()
'Add Preset Names to ComboBox, take first part of each line until first ","
If listPreset.Count > 0 Then
Dim PresetName As String
Dim index As Integer
For i = 0 To listPreset.Count - 1
index = listPreset.Item(i).IndexOf(",")
PresetName = LSet(listPreset.Item(i), index)
Preset_naamComboBox.Items.Add(PresetName)
Next
End If
Else
My.Settings.Filepath = ""
End If
End If
End Sub
Sub SaveData(ByVal PresetName As String)
Dim FileString As String = PresetName & ","
'Build File String with TextBox Data
For Each cntrl In Me.Controls
If TypeOf cntrl Is TextBox Or TypeOf cntrl Is ComboBox Then
FileString &= cntrl.selectedvalue.ToString & ","
End If
Next
'Check if FilePath exists
If My.Settings.Filepath = "" Then
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
My.Settings.Filepath = SaveFileDialog1.FileName
My.Settings.Save()
Call SaveFile()
Else
MsgBox("Save File Aborted" & vbCrLf & "Preset " & PresetName & " NOT saved")
'Remove Preset from ComboBox and Preset List
Preset_naamComboBox.Items.RemoveAt(Preset_naamComboBox.Items.Count - 1)
listPreset.RemoveAt(listPreset.Count - 1)
End If
Else
Call SaveFile()
End If
End Sub
Sub SaveFile()
myWriter = New StreamWriter(My.Settings.Filepath)
For i = 0 To listPreset.Count - 1
myWriter.WriteLine(listPreset.Item(i))
Next
myWriter.Close()
MsgBox("Preset: " & PresetName & " saved" & vbCrLf & "To File: " & My.Settings.Filepath)
End Sub</save>