Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Como: encapsular um controle Windows Forms com ToolStripControlHost

ToolStripControlHost foi projetado para permitir a hospedagem de controles Windows Forms arbitrários usando o ToolStripControlHost construtor ou estendendo ToolStripControlHost propriamente dito. É mais fácil ajustar o controle estendendo ToolStripControlHost e implementação de propriedades e métodos que expõem freqüentemente usados propriedades e métodos do controle. Também é possível expor eventos para o controle no ToolStripControlHost nível.

Para hospedar um controle em um ToolStripControlHost por derivação

  1. Estender ToolStripControlHost. Implemente um construtor padrão que chama a passagem do construtor de classe base no controle desejado.

    		// Call the base constructor passing in a MonthCalendar instance.
    		public ToolStripMonthCalendar() : base (new MonthCalendar()) { }
    
    
    
  2. Declarar uma propriedade do mesmo tipo que o controle de quebra automática e retornar Control sistema autônomo o tipo correto de controle no acessadores da propriedade.

    		public MonthCalendar MonthCalendarControl
    		{
    			get
    			{
    				return Control as MonthCalendar;
    			}
    		}
    
    
    
  3. Outros expõem usadas com freqüência propriedades e métodos do controle quebra automática com propriedades e métodos da classe estendida.

    		// Expose the MonthCalendar.FirstDayOfWeek as a property.
    		public Day FirstDayOfWeek
    		{
    			get
    			{
    				return MonthCalendarControl.FirstDayOfWeek;
    			}
    			set { value = MonthCalendarControl.FirstDayOfWeek; }
    		}
    
    		// Expose the AddBoldedDate method.
    		public void AddBoldedDate(DateTime dateToBold)
    		{
    			MonthCalendarControl.AddBoldedDate(dateToBold);
    		}
    
    
    
  4. Opcionalmente, substituir o OnSubscribeControlEvents, e OnUnsubscribeControlEvents métodos e adicione os eventos de controle que deseja expor.

    		protected override void OnSubscribeControlEvents(Control c)
    		{
    			// Call the base so the base events are connected.
    			base.OnSubscribeControlEvents(c);
    
    			// Cast the control to a MonthCalendar control.
    			MonthCalendar monthCalendarControl = (MonthCalendar) c;
    
    			// Add the event.
    			monthCalendarControl.DateChanged +=
    				new DateRangeEventHandler(OnDateChanged);
    		}
    
    		protected override void OnUnsubscribeControlEvents(Control c)
    		{
    			// Call the base method so the basic events are unsubscribed.
    			base.OnUnsubscribeControlEvents(c);
    
    			// Cast the control to a MonthCalendar control.
    			MonthCalendar monthCalendarControl = (MonthCalendar) c;
    
    			// Remove the event.
    			monthCalendarControl.DateChanged -=
    				new DateRangeEventHandler(OnDateChanged);
    		}
    
    
    
  5. Fornece a disposição do texto necessária para os eventos que você deseja expor.

    		// Declare the DateChanged event.
    		public event DateRangeEventHandler DateChanged;
    
    		// Raise the DateChanged event.
    		private void OnDateChanged(object sender, DateRangeEventArgs e)
    		{
    			if (DateChanged != null)
    			{
    				DateChanged(this, e);
    			}
    		}
    
    
    

	//Declare a class that inherits from ToolStripControlHost.
	public class ToolStripMonthCalendar : ToolStripControlHost
	{
		// Call the base constructor passing in a MonthCalendar instance.
		public ToolStripMonthCalendar() : base (new MonthCalendar()) { }

		public MonthCalendar MonthCalendarControl
		{
			get
			{
				return Control as MonthCalendar;
			}
		}

		// Expose the MonthCalendar.FirstDayOfWeek as a property.
		public Day FirstDayOfWeek
		{
			get
			{
				return MonthCalendarControl.FirstDayOfWeek;
			}
			set { value = MonthCalendarControl.FirstDayOfWeek; }
		}

		// Expose the AddBoldedDate method.
		public void AddBoldedDate(DateTime dateToBold)
		{
			MonthCalendarControl.AddBoldedDate(dateToBold);
		}

		// Subscribe and unsubscribe the control events you wish to expose.
		protected override void OnSubscribeControlEvents(Control c)
		{
			// Call the base so the base events are connected.
			base.OnSubscribeControlEvents(c);

			// Cast the control to a MonthCalendar control.
			MonthCalendar monthCalendarControl = (MonthCalendar) c;

			// Add the event.
			monthCalendarControl.DateChanged +=
				new DateRangeEventHandler(OnDateChanged);
		}

		protected override void OnUnsubscribeControlEvents(Control c)
		{
			// Call the base method so the basic events are unsubscribed.
			base.OnUnsubscribeControlEvents(c);

			// Cast the control to a MonthCalendar control.
			MonthCalendar monthCalendarControl = (MonthCalendar) c;

			// Remove the event.
			monthCalendarControl.DateChanged -=
				new DateRangeEventHandler(OnDateChanged);
		}

		// Declare the DateChanged event.
		public event DateRangeEventHandler DateChanged;

		// Raise the DateChanged event.
		private void OnDateChanged(object sender, DateRangeEventArgs e)
		{
			if (DateChanged != null)
			{
				DateChanged(this, e);
			}
		}
	}


Contribuições da comunidade

Mostrar: