2010-12-30 1 views
0

Hai all, Я динамически создаю кнопку во время выполнения в aC# .net Windows Application, я хочу нарисовать границу для динамически созданной кнопки, как я могу это сделать, я попробовал этотBorder для динамически созданных кнопок в Windows Application 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(); 
     } 

но не показывает какую-либо ошибку, но я не могу видеть границы

Пожалуйста, помогите

ответ

2

Если вы хотите кнопку, которая рисует иначе, вероятно, вы должны создать новый класс, наследующий от Button, и в нем вы должны переопределить OnPaint и/или OnPaintBackground и реализовать свои логики рисования, например рисование границы.

Причина, по которой ваше текущее решение не работает, возможно, зависит от , когда вы вызываете свой метод DrawBorder. Если код рисования не выполняется как часть обработки события OnPaint, тогда графика, которую вы рисуете, будет нарисована в следующей краске.

Но так или иначе, вместо того, чтобы самим рисовать границу, не можете ли вы установить Border proerpty на объект Button?

+0

Я думаю, вы не можете установить цвет стандартной границы кнопки в Windows Forms. –

+0

@Uwe Keim: это может быть причиной. Хотя (229,227,227) выглядит очень близко к «стандартному» цвету управления ... :) – Ran

+0

no может установить flatapperanceproperty для границы, если flatstyle является плоским – Nighil

Смежные вопросы