sharp requestfocus poner focused foco establecer control c# .net winforms textbox focus

requestfocus - focused c#



¿Cómo eliminar el foco de un TextBox en WinForms? (18)

Necesito eliminar el foco de varios TextBoxes. Intenté usar:

textBox1.Focused = false;

Su valor de propiedad ReadOnly es true .

Luego intenté establecer el foco en el formulario, para eliminarlo de todos los TextBoxes, pero esto tampoco funciona:

this.Focus();

y la función devuelve false cuando se selecciona un cuadro de texto.

Entonces, ¿cómo elimino el foco de un TextBox?


¡He encontrado una buena alternativa! Funciona mejor para mí, sin poner el foco en otra cosa.

Trata eso:

private void richTextBox_KeyDown(object sender, KeyEventArgs e) { e.SuppressKeyPress = true; }


Centrarse en la etiqueta no funcionó para mí, haciendo algo como label1.Focus() ¿no? el cuadro de texto todavía tiene foco cuando se carga el formulario; sin embargo, probar la respuesta de Velociraptors , funcionó para mí, estableciendo el control Activo del Formulario en la etiqueta como este:

private void Form1_Load(object sender, EventArgs e) { this.ActiveControl = label1; }


En el constructor de Form o UserControl que contiene la escritura de TextBox

SetStyle(ControlStyles.Selectable, false);

Después de InitializeComponent (); Fuente: https://.com/a/4811938/5750078

Ejemplo:

public partial class Main : UserControl { public Main() { InitializeComponent(); SetStyle(ControlStyles.Selectable, false); }


Esta publicación me llevó a hacer esto:

ActiveControl = null;

Esto me permite capturar toda la entrada del teclado en el nivel superior sin que otros controles se vuelvan locos.


Hice esto en mi control personalizado, hice esto enFocus ()

this.Parent.Focus();

Entonces, si texbox se enfoca, enfoca instantáneamente el cuadro de texto padre (formulario, o panel ...) Esta es una buena opción si desea hacer esto en control personalizado.


Intenta deshabilitar y habilitar el cuadro de texto.


Intente configurar TabStop en False para su control de vista que no se enfoca.

Por ejemplo:

txtEmpID.TabStop = false;


La forma en que lo soluciono es colocar todos mis controles de winform. Realizo todas las etiquetas y controles de winform que no se seleccionan como orden de tabulación 0, luego mi primer control como orden de tabulación 2 y luego aumento el orden de cada control seleccionable por 1, por lo que 3, 4, 5 etc.

De esta forma, cuando se inicien mis Winforms, ¡el primer TextBox no tiene foco!


Necesitas algún otro control enfocable para mover el foco.

Tenga en cuenta que puede establecer el enfoque en una etiqueta. Es posible que desee considerar dónde desea que llegue la tecla [Tabulador].

También tenga en cuenta que no puede establecerlo en el formulario. Los controles de contenedor como Formulario y Panel pasarán el Enfoque a su primer control secundario. ¿Cuál podría ser el TextBox del que quería que se alejara?


Parece que no tengo que enfocarme a ningún otro elemento. En una aplicación de Windows Phone 7, he estado usando el método Focus para desarmar el Focus of a Textbox.

Dar el siguiente comando establecerá el enfoque en nada:

void SearchBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { if (e.Key == Key.Enter) { Focus(); } }

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

Me funcionó, pero no sé por qué no funcionó para ti: /


Puede agregar el siguiente código:

this.ActiveControl = null; //this = form


Si lo único que desea es el efecto óptico de que el cuadro de texto no tiene una selección azul en todo su contenido, simplemente no seleccione ningún texto:

textBox_Log.SelectionStart = 0; textBox_Log.SelectionLength = 0; textBox_Log.Select();

Después de esto, al agregar contenido con .Text += "..." , no se mostrará ninguna selección azul.


También puede configurar la propiedad activecontrol formularios para activecontrol como

ActiveControl = null;


Una solución simple sería eliminar el foco, solo crea tu propia clase:

public class ViewOnlyTextBox : System.Windows.Forms.TextBox { // constants for the message sending const int WM_SETFOCUS = 0x0007; const int WM_KILLFOCUS = 0x0008; protected override void WndProc(ref Message m) { if(m.Msg == WM_SETFOCUS) m.Msg = WM_KILLFOCUS; base.WndProc (ref m); } }


prueba este ...

primer orden de tabulación de configuración.

luego, en el evento de carga de formulario, podemos enviar una tecla de tabulación presionar programáticamente a la aplicación. de modo que la aplicación dará el foco al primer contol en el orden de tabulación.

en forma de carga incluso escribir esta línea.

SendKeys.Send("{TAB}");

esto funcionó para mí


puedes hacer esto por dos métodos

  • simplemente haga que las propiedades "TabStop" del cuadro de texto deseado sean falsas, ahora no se enfocará, incluso si tiene un campo de texto
  • arrastre dos cuadros de texto

    1. hacer uno visible en el que no quiere foucus que es textbox1
    2. hacer que el 2º sea invisible e ir a las propiedades de ese campo de texto y seleccionar

valor de tabindex a 0 de textbox2

  1. y seleccione el tabindex de su textbox1 a 1 ahora no se enfocará en textbox1

Focus establece el foco de entrada, por lo que establecerlo en el formulario no funcionará porque los formularios no aceptan entrada. Intente establecer la propiedad ActiveControl del formulario en un control diferente. También puede usar Select para seleccionar un control específico o SelectNextControl para seleccionar el siguiente control en el orden de tabulación.


//using System; //using System.Collections.Generic; //using System.Linq; private void Form1_Load(object sender, EventArgs e) { FocusOnOtherControl(Controls.Cast<Control>(), button1); } private void FocusOnOtherControl<T>(IEnumerable<T> controls, Control focusOnMe) where T : Control { foreach (var control in controls) { if (control.GetType().Equals(typeof(TextBox))) { control.TabStop = false; control.LostFocus += new EventHandler((object sender, EventArgs e) => { focusOnMe.Focus(); }); } } }