当我加载一些文本被赋予文本框的表单时。该文本框中的所有文本都会突出显示。我希望vb不要以这种方式加载它。 如何解决它。 谢谢 Furqna
答案 0 :(得分:5)
您可以将文本框上的选项卡索引设置为其他内容,以使其不是最低索引。
您可以在form.activated事件中设置TextBox1.SelectionLength = 0.
我不喜欢这个,因为如果用户将文本设置为hilited并缩小应用程序,那么他们将失去hilite,但是相当容易。我想你可以使用一个标志来确保它只在第一次激活时才这样做。
您可以在加载中设置一个计时器事件,以便在加载事件发生后立即将其清除,但这似乎有点过分。我曾经在他们有一个标准函数的地方工作,这些函数在加载后100毫秒时发生在每个表单上,因为这样的问题。
答案 1 :(得分:1)
你可以尝试这个(它看起来像一个解决方法):
Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
TextBox1.SelectionStart = TextBox1.Text.Length
End Sub
它取决于TextBox的TabIndex,如果它具有最低的TabIndex,它会获得焦点,因此它的文本被选中。
答案 2 :(得分:1)
' VS.net 2013. Use the "Shown" event.
' GotFocus isn't soon enough.
Private Sub Form_Shown(sender As Object, e As EventArgs) Handles Me.Shown
TB.SelectionLength = 0
End Sub
答案 3 :(得分:0)
类型1方法
Dim speech = CreateObject("sapi.spvoice")
speech.speak(TextBox1.Text)
类型2方法
Dim oVoice As New SpeechLib.SpVoice
Dim cpFileStream As New SpeechLib.SpFileStream
'Set the voice type male or female and etc
oVoice.Voice = oVoice.GetVoices.Item(0)
'Set the voice volume
oVoice.Volume = 100
'Set the text that will be read by computer
oVoice.Speak(TextBox1.Text, SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault)
oVoice = Nothing
类型3方法
Imports System.Speech.Synthesis
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)处理MyBase.Load Dim spk As New SpeechSynthesizer 对于每个语音As InstalledVoice in spk.GetInstalledVoices ListBox1.Items.Add(voice.VoiceInfo.Name) 下一个 ListBox1.SelectedIndex = 0 结束子 Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Dim spk As New SpeechSynthesizer spk.SelectVoice(ListBox1.SelectedItem.ToString) spk.Speak(TextBox1.Text) 结束子 结束班
答案 4 :(得分:0)
如果为控件触发两次TextChanged或其他类似事件,也会发生这种情况。
答案 5 :(得分:0)
创建每个表单时。每个对象都被编入索引,您可以将选项卡Index设置为高于索引对象。示例:在第三个表单上放入一个文本框。
private void textBox1_TextChanged(object sender,EventArgs e)
这是项目中的第12个对象,如果您将选项卡索引放在整个项目中的索引对象之上,它将被编入索引。标签索引1000(问题解决了。)
祝你有个美好的一天。 踏板车