为什么不在Form.cs中使用自定义控件的绘制事件?

时间:2016-03-26 01:39:02

标签: c# winforms custom-controls paint onpaint

我有一个自定义按钮。 filter方法在控件的类文件中有效,但OnPaint方法在Button.Paint中无法正常工作。为什么会发生这种情况?如何解决?

我的按钮代码:

Form.cs

//code... public AltoButton() { SetStyle(ControlStyles.AllPaintingInWmPaint|ControlStyles.OptimizedDoubleBuffer|ControlStyles.ResizeRedraw|ControlStyles.SupportsTransparentBackColor|ControlStyles.UserPaint, true); BackColor = Color.Transparent; ForeColor = Color.Black; Font = new System.Drawing.Font("Comic Sans MS", 10, FontStyle.Bold); state = MouseState.Leave; transparency = false; } #endregion #region Events protected override void OnPaint(PaintEventArgs e) { //code to draw shape and painting } //code... 中的代码:

Form.cs

2 个答案:

答案 0 :(得分:1)

我自己找到了解决方案。原因是我删除了base.OnPaint(e)代码块中的OnPaint(e)

解决方案只是添加base.OnPaint(e)

protected override void OnPaint(PaintEventArgs e)
{
  //code to draw shape and painting
  base.OnPaint(e);
}

答案 1 :(得分:0)

问题可能在于屏幕上的绘图元素 - 您应该练习这样做以获得更多信息(这在不同项目中是独一无二的。)。您可以将元素添加到屏幕,选项卡等...希望它会帮助你。(帮帮我:P)