• C#控件重绘学习(一)


    由于要做一个工控软件,传统的控件显然已经不能满足实际的要求了,所以控件的重绘迫在眉睫。由于考研耽误了很多时间,C#的学习也搁浅了很长一段时间了,所以趁这个机会,我打算把控件的重绘认真的学习透彻。

    好了,控件的重绘,让我们从普通按钮开始吧!

    先刨一下Button的老底:

    命名空间: System.Windows.Forms
    程序集: System.Windows.Forms(在 System.Windows.Forms.dll 中)

    Button的属性就太多了:比如BackColor、Font等等。我们要做的就是修改他的这些属性。

    我们先自定义一个类,继承自System.Windows.Forms.Button

       1:  using System.Drawing;
       2:   
       3:  namespace WindowsFormsApplication1
       4:  {
       5:      class MyButton:System.Windows.Forms.Button
       6:      {
       7:          public MyButton()
       8:          {
       9:              BackColor = Color.Blue;
      10:              ForeColor = Color.White;
      11:              FlatStyle = System.Windows.Forms.FlatStyle.Flat;
      12:              Font = System.Windows.Forms.Control.DefaultFont;
      13:              UseWaitCursor = true;
      14:          }
      15:      }
      16:  }

    然后呢:在窗体中随便拖入一个Button,并且改写窗体源文件Form1.Designer.cs,将源文件中的System.Windows.Forms.Button();改为MyButton();

       1:  namespace WindowsFormsApplication1
       2:  {
       3:      partial class Form1
       4:      {
       5:          /// <summary>
       6:          /// 必需的设计器变量。
       7:          /// </summary>
       8:          private System.ComponentModel.IContainer components = null;
       9:   
      10:          /// <summary>
      11:          /// 清理所有正在使用的资源。
      12:          /// </summary>
      13:          /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
      14:          protected override void Dispose(bool disposing)
      15:          {
      16:              if (disposing && (components != null))
      17:              {
      18:                  components.Dispose();
      19:              }
      20:              base.Dispose(disposing);
      21:          }
      22:   
      23:          #region Windows 窗体设计器生成的代码
      24:   
      25:          /// <summary>
      26:          /// 设计器支持所需的方法 - 不要
      27:          /// 使用代码编辑器修改此方法的内容。
      28:          /// </summary>
      29:          private void InitializeComponent()
      30:          {
      31:              this.button1 = new MyButton();
      32:              this.SuspendLayout();
      33:              // 
      34:              // button1
      35:              // 
      36:              this.button1.Location = new System.Drawing.Point(12, 12);
      37:              this.button1.Name = "button1";
      38:              this.button1.Size = new System.Drawing.Size(75, 23);
      39:              this.button1.TabIndex = 0;
      40:              this.button1.Text = "button1";
      41:              this.button1.UseVisualStyleBackColor = true;
      42:              // 
      43:              // Form1
      44:              // 
      45:              this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
      46:              this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
      47:              this.ClientSize = new System.Drawing.Size(284, 261);
      48:              this.Controls.Add(this.button1);
      49:              this.Name = "Form1";
      50:              this.Text = "Form1";
      51:              this.ResumeLayout(false);
      52:   
      53:          }
      54:   
      55:          #endregion
      56:   
      57:          private MyButton button1;
      58:      }
      59:  }
      60:   

    运行之后效果如下:

    image

  • 相关阅读:
    Samba服务器配置
    Showdoc
    wkhtmltoimage(网页剪切功能)
    GTID数据库备份
    awstats日志分析
    docker桥接
    php的opcache缓存扩展(php页面代码刷新速度)
    Pureftp SSL/TLS配置
    ssh-keygen配置
    systemctl使用
  • 原文地址:https://www.cnblogs.com/humaoxiao/p/2378590.html
Copyright © 2020-2023  润新知