Button aktiviert lassen

Plumpsi

Mitglied
Hallo,

ich habe einen Button selbst erstellt mit zwei Grafiken für den Zustand aktiviert und deaktiviert. Wie mache ich das nun, daß der Button aktiviert bleibt? Es soll ähnlich wie bei Word funktionen mit Fett, Kursiv und unterstrichen. Kann mir jemand helfen?

Code:
		protected Image imageActivate = null;
		protected Image imageDeactivate = null;

		protected bool bMousePressed = false;

		public Image ImageActivate
		{
			get 
			{
				return imageActivate;
			}

			set 
			{
				imageActivate=value;
				Invalidate();
			}
		}

		public Image ImageDeactivate
		{
			get 
			{
				return imageDeactivate;
			}

			set 
			{
				imageDeactivate=value;
				Invalidate();
			}
		}

		protected override void OnMouseDown(MouseEventArgs e)
		{
			bMousePressed = true;
			Invalidate();
		}

		protected override void OnMouseUp(MouseEventArgs e)
		{
			bMousePressed = false;
			Invalidate();
		}

		protected override void OnPaint(PaintEventArgs e)
		{
			if (bMousePressed)
			{
				// mouse button is pressed
				if( imageActivate != null )
				{
					e.Graphics.DrawImage(imageActivate, ClientRectangle);
				}
			}
			else
			{
				if (ImageDeactivate!=null)
					e.Graphics.DrawImage(imageDeactivate, ClientRectangle);
			}
			base.OnPaint (e);
		}
 
Hi.

Wie wäre es, wenn du einfach immer das Bild für den aktiven Button zeichnest?

Aber da du sicher willst, das beim Klick der Button sich ein bisschen ändert, solltest du vielleicht noch ein drittes Bild machen, für denn Fall das er gerade gedrückt wird, der Button.
Und 'imageDeactivate' wird nur noch gezeichnet, wenn das Control deaktiviert ist. Kannst aber auch mit ein wenig Code einen ToogleButton draus machen..

Das mit den 'null'-Abfragen solltest vielleicht bissi überdenken. Ich meine, das du vielleicht Standard-Bilder einbauen solltest. Wenn der Button mal verwendet wird, aber der User vergessen hat Bilder zu setzen wird überhaupt nichts gezeichnet, oder dass dann Text gezeichnet wird, oder ein Rahmen. Hauptsache man erkennt, dass da was ist.

MfG,
Alex

Code:
protected Image imageActivate = null;
protected Image imageDeactivate = null;
protected Image imagePressed = null;

protected bool bMousePressed = false;

public Image ImagePressed
{
	get 
	{
		return imagePressed
	}

	set
	{
		imagePressed=value;
		Invalidate();
	}
}

public Image ImageActivate
{
	get 
	{
		return imageActivate;
	}

	set
	{
		imageActivate=value;
		Invalidate();
	}
}

public Image ImageDeactivate
{
	get 
	{
		return imageDeactivate;
	}
	set 
	{
		imageDeactivate=value;
		Invalidate();
	}
}

protected override void OnMouseDown(MouseEventArgs e)
{
	bMousePressed = true;
	Invalidate();
}

protected override void OnMouseUp(MouseEventArgs e)
{
	bMousePressed = false;
	Invalidate();
}

protected override void OnPaint(PaintEventArgs e)
{
	if (bMousePressed)
	{
		// mouse button is pressed
		if( imagePressed != null )
		{
			e.Graphics.DrawImage(imagePressed, ClientRectangle);
		}
	}
	else
	{
		if (!this.Enabled && ImageDeactivate!=null) // nur zeichnen, wenn das Control deaktiviert ist
			e.Graphics.DrawImage(imageDeactivate, ClientRectangle);
		else (ImageActivate!=null)
			e.Graphics.DrawImage(imageActivate, ClientRectangle);
	}
	base.OnPaint (e);
}
 

Neue Beiträge

Zurück