2011-01-13 6 views
1

Когда я загружаю форму, в которой какой-либо текст был указан в текстовое поле. Весь текст в этом текстовом поле выделен. Я хочу, чтобы vb не загружал его таким образом. Как это исправить. Благодаря FurqnaТекст выбирается в текстовом поле

+0

does 'textBox1.selectionLength = 0' help? Я действительно не уверен, это было как эоны, так как я в последний раз работал над этим. – SuperSaiyan

ответ

5

Вы можете установить индекс вкладок в текстовое поле на что-то еще, чтобы он не был самым низким индексом.

Вы можете установить TextBox1.SelectionLength = 0 в form.activated event.

Мне это не нравится, потому что, если бы у пользователя был текст, приподнятый и миниатюрный, тогда он потеряет хилит, но довольно легко сделать. Я думаю, вы могли бы использовать флаг, чтобы убедиться, что он сделал это только при первом активировании.

Вы можете установить событие таймера в нагрузке, чтобы очистить его сразу после события загрузки, но это похоже на перебор. Я работал в тех местах, где у них была стандартная функция, которая выполнялась в каждой форме через 100 мс после загрузки из-за таких проблем.

1

Вы могли бы попробовать это (он выглядит как обходной путь):

Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus 
    TextBox1.SelectionStart = TextBox1.Text.Length 
End Sub 

Это зависит от TabIndex вашего TextBox, если он имеет самый низкий TabIndex он получает фокус и, следовательно, это Текст выбран.

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 

Общественный класс Form1 Private Sub Form1_Load (ByVal отправитель Как System.Object , ByVal e As System.Eve ntArgs) Ручки MyBase.Load Dim SPK As New SpeechSynthesizer для каждого голоса Как InstalledVoice В spk.GetInstalledVoices ListBox1.Items.Add (voice.VoiceInfo.Name) Следующая ListBox1.SelectedIndex = 0 End Sub Private Sub Button1_Click (ByVal отправитель Как System.Object, ByVal е Как System.EventArgs) Ручки Button1.Click Dim SPK As New SpeechSynthesizer spk.SelectVoice (ListBox1.SelectedItem.ToString) spk.Speak (TextBox1.Text) End Sub End Класс

0

Это также случается иногда, если TextCha или другое подобное событие дважды запускается для элемента управления.

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 
0

При создании каждой формы. Каждый объект индексируется, вы можете установить вкладку Index выше, чем проиндексированный объект. Пример: На третьей форме вы поместите текстовое поле в

частной юридической силы (отправитель объекта, EventArgs е) textBox1_TextChanged

Это был 12-й объект в проекте, он будет проиндексирован на 12, если вы поставите. индекс вкладки выше, чем индексированные объекты во всем проекте. Tab index 1000 (проблема решена.)

Отличный день. Scooter

Смежные вопросы