2010-12-30 23 views
0

Hai alle, Ich bin dynamisch erstellen Schaltfläche zur Laufzeit in aC# .net Windows-Anwendung, ich möchte einen Rahmen für die dynamisch erstellte Schaltfläche zeichnen, wie kann ich es tun, ich habe versucht, dieseGrenze für dynamisch erstellte Schaltflächen in Windows Anwendung C# .net

private void DrawBorder(Button bt) 
     { 
      Graphics g = bt.CreateGraphics(); 
      ControlPaint.DrawBorder(g, bt.DisplayRectangle, Color.FromArgb(229, 227, 227), ButtonBorderStyle.Solid); 
      g.Dispose(); 
     } 

aber es ist kein Fehler zeigt, aber ich

jede Grenze nicht sehen können

Bitte Hilfe

Antwort

2

Wenn Sie auf eine Schaltfläche möchten, die anders zieht, sollten Sie vielleicht eine neue erstellen Klasse, die vonerbt, und darin würden Sie OnPaint und/oder OnPaintBackground überschreiben und Ihre Zeichnungslogiken implementieren, z. B. das Zeichnen eines Rahmens.

Der Grund, warum Ihre aktuelle Lösung nicht funktioniert, hängt wahrscheinlich davon ab, Sie Ihre DrawBorder Methode aufrufen. Wenn Ihr Zeichencode nicht im Rahmen der Verarbeitung eines OnPaint-Ereignisses ausgeführt wird, werden die Grafiken, die Sie zeichnen, in der nächsten Farbe dargestellt.

Aber trotzdem, anstatt die Grenze selbst zu zeichnen, können Sie nicht die Border proerpty auf dem Button Objekt setzen?

+0

Ich denke, Sie können die Farbe des Standardrahmens einer Schaltfläche in Windows Forms nicht festlegen. –

+0

@Uwe Keim: das könnte der Grund sein. Obwohl (229,227,227) sehr nahe an der "Standard" -Kontrollfarbe liegt ... :) – Ran

+0

Nein kann flatapperanceproperty für border setzen, wenn flatstyle flach ist – Nighil

Verwandte Themen