0

我想用不同的背景和不同的按钮图像自定义我的 winform 的控制框。我该怎么做?有没有办法用用户控件或类似的东西制作一个自定义控件框,然后将它添加到winform?

4

3 回答 3

0

UserControl您可以通过从类似的继承来创建自己的自定义控件

class MyControl : System.Windows.Forms.Button //this could also have been System.Windows.Forms.UserControl or any other existing control type as a template
{
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {
        //Paint whatever you wish on this buttons graphics using e.Graphics
    }
}

编写自定义控件有很多内容。这里要回答的太多了。一个很好的参考是:http: //msdn.microsoft.com/en-us/library/6hws6h2t.aspx

您可以创建自己的表单控件并隐藏父控件框。或者,也许您可​​以继承System.Windows.Form并创建一个自定义表单。但我自己从未尝试过。

对于使用 OnPaint,如果您关心性能和/或闪烁等,则必须牢记一些规则:在 .Net 应用程序中使用 OnPaint 的正确方法是什么?

于 2013-03-13T08:46:31.843 回答
0

您对使用 .NET 框架的方式没有影响。您必须为表单的非客户区实现自定义绘图。以下内容可能会对您有所帮助:http: //www.codeplex.com/wikipage ?ProjectName=CustomerBorderForm&title=Painting%20NonClient%20Area

于 2013-03-13T09:00:53.727 回答
-1

不知道我理解对不对。您想创建自己的控件吗?如果是,试试这个:

  • 创建自定义控件。
  • 更改控件的类型。

改变:

public partial class MyCustomControl : Control { ... }

为了:

public partial class MyCustomControl : Form { ... }
  • 将 Controlbox 属性的值更改为 false。
  • 更改您想要自定义的任何属性。
  • 创建一个新表格。
  • 更改表单的类型。

改变:

   public partial class MyForm : Form { ... }

为了:

public partial class MyForm : MyCustomControl { ... }

现在您的 MyForm 就像您的 MyCustomControl 一样,您可以在所有项目中重复使用。

于 2013-03-13T17:04:13.677 回答