Как убрать фокус с textbox c
Перейти к содержимому

Как убрать фокус с textbox c

  • автор:

Как убрать фокус с textbox c

Разработчик Offline Client

ICQ: 233286456

ICQ: 299287824

Разработчик Offline Client

ICQ: 233286456

ICQ: 299287824

Разработчик Offline Client

ICQ: 233286456

ICQ: 299287824

Public Sub TextBox1_Changed(sender As Object, e As System.EventArgs) _
Handless TextBox1.Changed

TextBox1.Tag=True
End Sub

Когда ты сам хочешь изменить текст из программного кода пиши:

Dim boolTemp as Boolean=CType(TextBox1.Tag, Boolean)
TextBox1.Text=»Hello World!»
TextBox1.Tag=boolTemp

Как грамотно убрать фокус с TextBox?

Всем доброе утро. Как грамотно убрать фокус с TextBox? Свойство Focused для данного контрола доступно только для чтения. Как вариант устанавливаю фокус на label, но на сколько это правильно — не знаю.

Отслеживать
задан 11 янв 2017 в 6:41
Александр Пузанов Александр Пузанов
2,785 3 3 золотых знака 32 32 серебряных знака 64 64 бронзовых знака
TextBox1.TabStop = False; ?
11 янв 2017 в 6:50

тут необходимо себе уяснить, что просто «снять» фокус — нельзя. Фокус где-то должен быть. Не знаю является ли установка фокуса на label — лучшим местом для фокуса, это вам решать. А TextBox1.TabStop = False; просто делает контрол «нефокусабельным»

11 янв 2017 в 7:59

вообще для понимания тут нужны детали UX/UI, иногда после ввода текста в поле правильнее переводить фокус на кнопку ОК, например, и тп

11 янв 2017 в 9:54

ну так может лучше будет переводить фокус на кнопку «искать», если она есть, или на результаты поиска

11 янв 2017 в 10:15

Возвращаясь к нашей беседе, прежде чем беспокоить сообщество подобным вопросом, а почему бы сначала самому не разобраться, в том, что такое вообще фокус? Я не буду ставить минус, но большинство вопросов именно такие. На этом я намерен закончить нашу дискуссию.

17 янв 2017 в 10:36

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Focused — свойство, возвращающее находится ли сейчас элемент в фокусе.

Для того чтобы сфокусироваться на элементе, можно использовать winapi функцию SetFocus .

[DllImport("user32.dll")] private static void SetFocus(IntPtr Handle); void OnClick(object sender) < if((Button)sender.Name == "Button")) < SetFocus((Button)sender.Handle); >> 

Или можно установить хук на WndProc, но скорее всего вам это нужно.

Подробнее о хуке WndProc на MSDN

Убрать фокус у TextBox

Доброго времени суток.
Вопрос такой, как же всё же правильно убирать фокус с TextBox?
Я думаю стоит убирать фокус с TextBox в любом случае, если пользователь не нажал ещё раз на TextBox.
Думаю такой вариант будет самый правильный.

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Убрать фокус с textbox
Добрый день. Ситуация такова: имеется 3 textbox’a, при запуске фокус устанавливается на 1 textbox.

Фокус ввода TextBox
Тема легкая вопрос посложней: Как забиндить фокус ввода на текстбокс с другого элемента используя.

DataGrid. Убрать фокус со строки
DataGrid состоит например из 2 строк. Не получается сделать, чтобы при нажатие не на строку(то.

Как убрать/поставить фокус на элементе?
у меня есть обработчик события public void KeyDown_Event(object sender, KeyEventArgs e) .

Эксперт .NET

15238 / 10356 / 2721
Регистрация: 21.04.2018
Сообщений: 30,670
Записей в блоге: 2
L1onelY, вы о чём, вообще?
Регистрация: 01.12.2019
Сообщений: 284

Элд Хасп, о том, что когда пользователь нажал на TextBox, и ввёл текст, и потом нажал на любое место в приложение, чтобы сбрасывать фокус с TextBox’a

Эксперт .NET

15238 / 10356 / 2721
Регистрация: 21.04.2018
Сообщений: 30,670
Записей в блоге: 2

L1onelY, понял — это продолжение холивара другой темы.

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

1564 / 573 / 180
Регистрация: 05.12.2015
Сообщений: 925

Лучший ответ

Сообщение было отмечено Элд Хасп как решение

Решение

L1onelY, буквально как ты написал можно так:
1. определи в Window (только в Window. ) событие: PreviewMouseDown=»globalMouseDown»
2 обработчик

1 2 3 4 5 6 7 8
private void globalMouseDown( object sender, MouseButtonEventArgs e ) { if( Keyboard.FocusedElement is TextBox felem ) if( sender != felem ) // раскомментируй эту строку ниже чтоб фокус передавался следующему //if( !felem.MoveFocus( new TraversalRequest( FocusNavigationDirection.Next ) ) ) Keyboard.ClearFocus(); }

Эксперт .NET

15238 / 10356 / 2721
Регистрация: 21.04.2018
Сообщений: 30,670
Записей в блоге: 2

proa33, как я понял из вопроса Я думаю стоит убирать фокус . Думаю такой вариант будет самый правильный. , вопрос не в реализации, а в правильности, полезности подобной фичи в GUI.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

При открытии окна установить фокус на TextBox
Я в полном отчаянии. Я уже полностью запуталась и с MVVM, WPF, MVVM Light. В общем мне нужно, чтоб.

Как убрать фокус из TextBox
Есть обычная форма с одним TextBox Нужно чтоб при нажатии левой кнопкой мыши на любое пустое место.

Если в textbox введено меньше 3 символов и фокус снимается с textbox, то вывод ошибки
если в textbox введено меньше 3 символов и пользователь вышел за границы textbox то вывести ошибку.

убрать фокус с кнопки
проблема в следующем. во фрэймовой системе есть страница menu-фрэйм выбора типов.

Убрать фокус у кнопок
подскажите как сделать кнопки без фокуса?

Убрать фокус с MessageBox
Добрый вечер всем. Пишу игру в которой пользователь жмёт на Space, в какой-то момент ему вылетает.

Как убрать фокус с textbox c

Подскажите как сделать. Есть программа, висит в трее, через заданное время она выводится на экран.
Вопрос: как сделать чтоб когда она выводится, то не забирала фокус с активного окна(чтоб если я что то печатаю то я не начал печатать в открывшимся окне а продолжил там где начал).

Пользователь
Регистрация: 01.07.2011
Сообщений: 21

Если оба окна из одной твоей программы, тогда при выводе окна из трея вызывай Focus() для окна, в котором печатаешь.
Если печатаешь в любом другом окне, то перед выводом из трея получи дескриптор этого окна с помощью WinAPI-функции GetForegroundWindow и после вывода из трея верни ему фокус с помощью SetForegroundWindow

Пользователь
Регистрация: 12.03.2010
Сообщений: 47
Сообщение от VikaR

Если печатаешь в любом другом окне, то перед выводом из трея получи дескриптор этого окна с помощью WinAPI-функции GetForegroundWindow и после вывода из трея верни ему фокус с помощью SetForegroundWindow

А можно пример?
Пользователь
Регистрация: 12.03.2010
Сообщений: 47
Сообщение от VikaR

Если оба окна из одной твоей программы, тогда при выводе окна из трея вызывай Focus() для окна, в котором печатаешь.
Если печатаешь в любом другом окне, то перед выводом из трея получи дескриптор этого окна с помощью WinAPI-функции GetForegroundWindow и после вывода из трея верни ему фокус с помощью SetForegroundWindow

сделал так

IntPtr hFore; hFore = GetForegroundWindow(); Show(); SetForegroundWindow(hFore);

все равно не работает.
Форумчанин
Регистрация: 17.12.2008
Сообщений: 250
интернет говорит
http://stackoverflow.com/a/157843

 public class MyForm:Form < protected override bool ShowWithoutActivation < get < return true; >> >

Пользователь
Регистрация: 12.03.2010
Сообщений: 47
Сообщение от Reskov
интернет говорит
http://stackoverflow.com/a/157843

 public class MyForm:Form < protected override bool ShowWithoutActivation < get < return true; >> >

Все равно при открытии окна фокус переходит в textbox я продолжаю печать уже в него
Форумчанин
Регистрация: 17.12.2008
Сообщений: 250
Вы открывали ссылку?? там в ответах на коментарий на выделенный коментарий

I also needed to set form1.Enabled = false to prevent inner controls from stealing focus
And leave TopMost off.

либо попробуйте другой способ из ответов на ссылке, там же масса вариантов, а потом обязательно отпишите какой помог Вам

Последний раз редактировалось Reskov; 27.06.2012 в 15:56 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *