2009-03-23 21 views
9

En el mundo de WinForms Controles .NetComponente Vs Control

¿Cuál es la diferencia entre Componente y Control?

¿Puede un control contener componentes? ¿Puede un componente contener controles?

+0

Este artículo puede ayudar: http://msdn.microsoft.com/en-us/library/0b1dk63b.aspx –

Respuesta

5

A Control tiene todas las cañerías necesarias para actuar como una ventana. La capacidad de responder a los mensajes de la ventana (WndProc) y tener un control siendo el más destacado. El componente falta todo eso. Es realmente bastante simple, tiene soporte de tiempo de diseño y se puede eliminar, eso es todo.

Los componentes aún pueden tener una representación en tiempo de ejecución, OpenFileDialog es el mejor ejemplo. Pero eso es en realidad un diálogo integrado en Windows, no en Windows Forms.

+0

Y parece que los componentes no tienen el evento 'Load'. Entonces, ¿cómo se lleva a cabo la inicialización que debe producirse después de que se haya cargado el formulario que contiene el componente? –

+0

En general, un componente no sabe en qué forma está ubicado en tiempo de ejecución. Por lo tanto, tampoco le importaría el estado de la carga del formulario y el constructor es lo suficientemente bueno para hacer toda la inicialización requerida. Haga clic en el botón Preguntar para explicar sus requisitos. –

+0

Mi componente definitivamente le importa, ya que todos los controladores de eventos son nulos cuando se ejecuta el constructor. Puedes ver mi pregunta [aquí] (http://stackoverflow.com/questions/17332643/determining-when-the-owner-of-a-component-has-loaded). Gracias. –

1

Un Componente es solo una representación de un objeto/sub API. p.ej. ImageList es un componente que es invisible y es solo una API en un conjunto de imágenes. El hecho de que puede arrastrarlos y soltarlos en formularios es solo azúcar en el diseñador.

A El control está diseñado para ser visible/interactable/encajable.

+0

También hay otra parte de la pregunta. – NileshChauhan

0

En respuesta a su comentario, el Componente y el Control se pueden ver en el navegador de Objetos como procedentes de diferentes jerarquías de objetos. No se puede agregar un Componente dentro de un Control, ya que la colección de Controles solo acepta objetos con el tipo base de Control.

Un componente no puede contener controles.

1

A componente es básicamente una clase (puede ser un dll, objeto Activex).

  • No tiene capacidades de interfaz de usuario, por eso no se puede ver una representación visual.
  • Es portátil y no es específico de ningún idioma.

Mientras que, por otro lado, control es un componente que proporciona capacidades de interfaz de usuario.

  • Dado que el control tiene UI, puede ver su representación visual.
  • Es específico del idioma y no es portátil.
Cuestiones relacionadas