C # ¿Dónde viene la ejecución después del manejo del evento? -- # campo con winforms camp Relacionados El problema

C# where does execution come after the handling the event?


0
vote

problema

Español

Considere que tengo una "forma" y contiene el botón. Empecé el proceso de compilación (Ctrl + F5). Cuando hago clic en el botón caso es que ocurre y se ejecuta controlador de eventos. ¿Dónde ejecución volver después de éste se controla?

   public partial class Form1 : Form {      public Form1()     {         InitializeComponent();     }      private void button1_Click(object sender, EventArgs e)     {         //some Code     } }   
Original en ingles

Consider i have a "Form" and it contains Button. I started the compiling process (Ctrl +F5). When i click the button the event is occurs and event handler is executed. Where does execution come back after event is handled?

 public partial class Form1 : Form {      public Form1()     {         InitializeComponent();     }      private void button1_Click(object sender, EventArgs e)     {         //some Code     } } 
     
   
   

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

respuesta corta: se remonta a escuchar más eventos.

respuesta detallada:

debajo del capó, todo en Windows se ejecuta en la parte superior de la API de Win32. La API de Win32 tiene al menos 2 funciones que se ejecutan todos los programas. El procedimiento de la ventana es uno y ahí es donde se procesan nuestros mensajes de eventos. El otro se llama el bucle de mensaje y se parece similar a esto:

  while(GetMessage(&Msg, NULL, 0, 0) > 0) {     TranslateMessage(&Msg);     DispatchMessage(&Msg); } return Msg.wParam;   

El bucle de mensaje es el corazón de todos los programas de Windows basados ​​en eventos. GetMessage() obtiene un mensaje de la cola de mensajes de su aplicación. En cualquier momento, el usuario mueve el mouse, escriba en el teclado, haga clic en el menú de su ventana, o haga cualquier otra cantidad de otras cosas, los mensajes generan el sistema y se ingresan en la cola de mensajes de su programa. Al llamar a []0 , usted solicita que se elimine el siguiente mensaje disponible de la cola y le devuelva para su procesamiento.

[]1111 hace algún procesamiento adicional en eventos de teclado. Finalmente, []2 envía el mensaje a la ventana a la que se envió el mensaje.

 

Short Answer: It goes back to listening for more events.

Detailed Answer:

Under the hood, everything in Windows runs on top of the Win32 API. The Win32 API has at least 2 functions that all programs run. The window procedure is one and that is where our event messages get processed. The other one is called the message loop and it looks similar to this:

while(GetMessage(&Msg, NULL, 0, 0) > 0) {     TranslateMessage(&Msg);     DispatchMessage(&Msg); } return Msg.wParam; 

The message loop is the heart of all event-based Windows programs. GetMessage() gets a message from your application's message queue. Any time the user moves the mouse, types on the keyboard, clicks on your window's menu, or does any number of other things, messages are generated by the system and entered into your program's message queue. By calling GetMessage() you are requesting the next available message to be removed from the queue and returned to you for processing.

TranslateMessage() does some additional processing on keyboard events. Finally DispatchMessage() sends the message out to the window that the message was sent to.

 
 
1
 
vote

En cada aplicación WinForms es el bucle de mensaje principal "oculto". El bucle de mensaje principal es básico []3 bucle y cheques para los eventos de entrada (y algunos otros) como []4 , []5 , etc.

Este bucle principal se ejecuta dentro de []6616 es la llamada. Probablemente en su archivo []7 .

 

In every winforms application is "hidden" main message loop. Main message loop is basicaly while(true) ... loop and checks for input (and some other) events like Click, KeyDown, etc...

This main loop is executed inside Application.Run(...) is call. Probably in your Program.cs file.

 
 
   
   
1
 
vote

Revisa el Descripción general de los eventos de Windows Forms

Cuando el evento está registrado por la aplicación, el control genera el evento invocando al delegado para ese evento. El delegado a su vez llama al método obligado. En el caso más común (un delegado de multidifusión), el delegado llama a cada método unido en la lista de invocación a su vez, lo que proporciona una notificación de uno a muchos. Esta estrategia significa que el control no necesita mantener una lista de objetos objetivo para la notificación de eventos, el delegado maneja todos los registros y notificación.

El control en sí mismo, llama al delegado. El código del control recaudó el método. Entonces, cuando hace clic en el control, hay algún código en el control que llama al delegado que ha proporcionado.

El código comúnmente llama al delegado, ya que sería cualquier otra función y su flujo de código continuo:

i.e.

  // do something deletat(...); // continue doing something   

Puede encontrar un ejemplo aún mejor aquí: Comprensión de eventos y eventos Manipuladores en C #

sobre cómo se llaman delegados.

 

Check the Events overview for Windows Forms

When an event is recorded by the application, the control raises the event by invoking the delegate for that event. The delegate in turn calls the bound method. In the most common case (a multicast delegate) the delegate calls each bound method in the invocation list in turn, which provides a one-to-many notification. This strategy means that the control does not need to maintain a list of target objects for event notificationxe2x80x94the delegate handles all registration and notification.

So the control itself, calls the delegate. The code of the control raised the method. So when you click the control there is some code in the control that calls the delegate you have provided.

The code commonly calls the delegate as it would any other function and continuous it's code flow:

i.e.

// do something deletat(...); // continue doing something 

You can find an even better example here: Understanding events and event handlers in C#

on how delegates are being called.

 
 
 
 

Relacionados problema

1  Visual Studio Designer Mover controles y agregando columnas de cuadrícula cuando se abre el formulario  ( Visual studio designer moving controls and adding grid columns when form is open ) 
La primera vez que trato de abrir una forma particular Muchos de los controles (aquellos con anclajes en el lado derecho y / o la parte inferior) se desplazan...

0  No se pueden cambiar programáticamente las páginas de pestañas una vez que se lanza una excepción del evento seleccionadoInexcanzado en TabControl  ( Cannot programmatically change tab pages once exception is thrown from selectedi ) 
Esta es una pregunta de C #, WinForm. Tengo un control de TabControl y uso dos botones de navegación para cambiar entre las páginas de mi pestaña. Utilicé T...

606  La operación de rosca cruzada no es válida: el control se accede desde un hilo que no sea el hilo se creó en  ( Cross thread operation not valid control accessed from a thread other than the ) 
Tengo un escenario. (Formularios de Windows, C #, .NET) Hay una forma principal que alberga algún control de usuario. El control de usuario hace algún fu...

38  Visualización del contenido de flash en una aplicación C # WinForms  ( Displaying flash content in a c sharp winforms application ) 
¿Cuál es la mejor manera de mostrar Flash contenido en una aplicación c # winforms? Me gustaría crear un control de usuario (similar al PictureBox ) que ...

0  C # ejecuta la función cuando sale el usuario  ( C sharp run function when user exits ) 
¿Hay alguna forma de llamar a una función en C # cuando el usuario exista la aplicación? Estoy usando Visual C # 2008 Express Edition. gracias. ...

12  ¿El nivel de un TreeView en WPF?  ( The level of a treeview in wpf ) 
En una aplicación WinForms , el nivel de un int111 está dado por int2 ¿Cuál es el comando correspondiente en wpf ? ...

3  Miniatura de la imagen en un cuadro de lista de formas de WinForms  ( Image thumbnail in a winforms listbox ) 
Estoy tratando de mostrar una miniatura dentro de un cuadro de lista en una aplicación de formulario de Windows. He leído y he visto todo tipo de sugerencias,...

2  El control dinámico en C #  ( Dynamic control in c sharp ) 
Quiero crear una especie de matriz de 4 x 3 con cuadros de texto y casillas de verificación. Si el elemento es casilla de verificación o de texto depende de l...

66  ¿Cuál es la forma preferida de encontrar un control enfocado en la aplicación WinForms?  ( What is the preferred way to find focused control in winforms app ) 
¿Cuál es la forma preferida / más fácil de encontrar el control que está recibiendo actualmente la entrada del usuario (teclado) en WinForms? Hasta ahora, h...

54  WinForms ComboBox Data Binding Gotcha  ( Winforms combobox data binding gotcha ) 
asume que está haciendo algo como lo siguiente List<string> myitems = new List<string> { "Item 1", "Item 2", "Item 3" }; ComboBox box = new Co...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos