<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          (六)C# Winform自定義控件-單選框

          共 38153字,需瀏覽 77分鐘

           ·

          2020-07-28 17:23

          準(zhǔn)備工作

          準(zhǔn)備4個(gè)圖片,分別對(duì)應(yīng)選中,沒選中,選中禁用,沒選中禁用

          單選框需要支持分組,當(dāng)同一面板上具有多種選擇的時(shí)候,分組就顯得更為重要了

          開始

          添加一個(gè)用戶控件,命名為:UCRadioButton

          看一下有哪些屬性

          [Description("選中改變事件"), Category("自定義")]
          public event EventHandler CheckedChangeEvent;

          private Font _Font = new Font("微軟雅黑"12);
          [Description("字體"), Category("自定義")]
          public new Font Font
          {
              get { return _Font; }
              set
              {
                  _Font = value;
                  label1.Font = value;
              }
          }

          private Color _ForeColor = Color.FromArgb(626262);
          [Description("字體顏色"), Category("自定義")]
          public new Color ForeColor
          {
              get { return _ForeColor; }
              set
              {
                  label1.ForeColor = value;
                  _ForeColor = value;
              }
          }
          private string _Text = "單選按鈕";
          [Description("文本"), Category("自定義")]
          public string TextValue
          {
              get { return _Text; }
              set
              {
                  label1.Text = value;
                  _Text = value;
              }
          }
          private bool _checked = false;
          [Description("是否選中"), Category("自定義")]
          public bool Checked
          {
              get
              {
                  return _checked;
              }
              set
              {
                  if (_checked != value)
                  {
                      _checked = value;
                      if (base.Enabled)
                      {
                          if (_checked)
                          {
                              panel1.BackgroundImage = Properties.Resources.radioButton1;
                          }
                          else
                          {
                              panel1.BackgroundImage = Properties.Resources.radioButton0;
                          }
                      }
                      else
                      {
                          if (_checked)
                          {
                              panel1.BackgroundImage = Properties.Resources.radioButton10;
                          }
                          else
                          {
                              panel1.BackgroundImage = Properties.Resources.radioButton00;
                          }
                      }
                      SetCheck(value);

                      if (CheckedChangeEvent != null)
                      {
                          CheckedChangeEvent(thisnull);
                      }
                  }
              }
          }

          private string _groupName;

          [Description("分組名稱"), Category("自定義")]
          public string GroupName
          {
              get { return _groupName; }
              set { _groupName = value; }
          }

          public new bool Enabled
          {
              get
              {
                  return base.Enabled;
              }
              set
              {
                  base.Enabled = value;
                  if (value)
                  {
                      if (_checked)
                      {
                          panel1.BackgroundImage = Properties.Resources.radioButton1;
                      }
                      else
                      {
                          panel1.BackgroundImage = Properties.Resources.radioButton0;
                      }
                  }
                  else
                  {
                      if (_checked)
                      {
                          panel1.BackgroundImage = Properties.Resources.radioButton10;
                      }
                      else
                      {
                          panel1.BackgroundImage = Properties.Resources.radioButton00;
                      }
                  }
              }
          }

          當(dāng)選中狀態(tài)改變時(shí)需要根據(jù)分組名稱來做相應(yīng)的處理

          private void SetCheck(bool bln)
          {
              if (!bln)
                  return;
              if (this.Parent != null)
              {
                  foreach (Control c in this.Parent.Controls)
                  {
                      if (c is UCRadioButton && c != this)
                      {
                          UCRadioButton uc = (UCRadioButton)c;
                          if (_groupName == uc.GroupName && uc.Checked)
                          {
                              uc.Checked = false;
                              return;
                          }
                      }
                  }
              }
          }

          當(dāng)點(diǎn)擊時(shí)改變選中狀態(tài)

          private void Radio_MouseDown(object sender, MouseEventArgs e)
          {
              this.Checked = true;
          }

          加載時(shí)做一下處理,防止多選了

          private void UCRadioButton_Load(object sender, EventArgs e)
          {
              if (this.Parent != null && this._checked)
              {
                  foreach (Control c in this.Parent.Controls)
                  {
                      if (c is UCRadioButton && c != this)
                      {
                          UCRadioButton uc = (UCRadioButton)c;
                          if (_groupName == uc.GroupName && uc.Checked)
                          {
                              Checked = false;
                              return;
                          }
                      }
                  }
              }
          }

          來看下完整的代碼吧

          // 版權(quán)所有  黃正輝  交流群:568015492   QQ:623128629
          // 文件名稱:UCRadioButton.cs
          // 創(chuàng)建日期:2019-08-15 16:03:13
          // 功能描述:RadioButton
          // 項(xiàng)目地址:https://gitee.com/kwwwvagaa/net_winform_custom_control
          using System;
          using System.Collections.Generic;
          using System.ComponentModel;
          using System.Drawing;
          using System.Data;
          using System.Linq;
          using System.Text;
          using System.Windows.Forms;

          namespace HZH_Controls.Controls
          {
              [DefaultEvent("CheckedChangeEvent")]
              public partial class UCRadioButton : UserControl
              {
                  [Description("選中改變事件"), Category("自定義")]
                  public event EventHandler CheckedChangeEvent;

                  private Font _Font = new Font("微軟雅黑"12);
                  [Description("字體"), Category("自定義")]
                  public new Font Font
                  {
                      get { return _Font; }
                      set
                      {
                          _Font = value;
                          label1.Font = value;
                      }
                  }

                  private Color _ForeColor = Color.FromArgb(626262);
                  [Description("字體顏色"), Category("自定義")]
                  public new Color ForeColor
                  {
                      get { return _ForeColor; }
                      set
                      {
                          label1.ForeColor = value;
                          _ForeColor = value;
                      }
                  }
                  private string _Text = "單選按鈕";
                  [Description("文本"), Category("自定義")]
                  public string TextValue
                  {
                      get { return _Text; }
                      set
                      {
                          label1.Text = value;
                          _Text = value;
                      }
                  }
                  private bool _checked = false;
                  [Description("是否選中"), Category("自定義")]
                  public bool Checked
                  {
                      get
                      {
                          return _checked;
                      }
                      set
                      {
                          if (_checked != value)
                          {
                              _checked = value;
                              if (base.Enabled)
                              {
                                  if (_checked)
                                  {
                                      panel1.BackgroundImage = Properties.Resources.radioButton1;
                                  }
                                  else
                                  {
                                      panel1.BackgroundImage = Properties.Resources.radioButton0;
                                  }
                              }
                              else
                              {
                                  if (_checked)
                                  {
                                      panel1.BackgroundImage = Properties.Resources.radioButton10;
                                  }
                                  else
                                  {
                                      panel1.BackgroundImage = Properties.Resources.radioButton00;
                                  }
                              }
                              SetCheck(value);

                              if (CheckedChangeEvent != null)
                              {
                                  CheckedChangeEvent(thisnull);
                              }
                          }
                      }
                  }

                  private string _groupName;

                  [Description("分組名稱"), Category("自定義")]
                  public string GroupName
                  {
                      get { return _groupName; }
                      set { _groupName = value; }
                  }

                  public new bool Enabled
                  {
                      get
                      {
                          return base.Enabled;
                      }
                      set
                      {
                          base.Enabled = value;
                          if (value)
                          {
                              if (_checked)
                              {
                                  panel1.BackgroundImage = Properties.Resources.radioButton1;
                              }
                              else
                              {
                                  panel1.BackgroundImage = Properties.Resources.radioButton0;
                              }
                          }
                          else
                          {
                              if (_checked)
                              {
                                  panel1.BackgroundImage = Properties.Resources.radioButton10;
                              }
                              else
                              {
                                  panel1.BackgroundImage = Properties.Resources.radioButton00;
                              }
                          }
                      }
                  }
                  public UCRadioButton()
                  {
                      InitializeComponent();
                  }

                  private void SetCheck(bool bln)
                  {
                      if (!bln)
                          return;
                      if (this.Parent != null)
                      {
                          foreach (Control c in this.Parent.Controls)
                          {
                              if (c is UCRadioButton && c != this)
                              {
                                  UCRadioButton uc = (UCRadioButton)c;
                                  if (_groupName == uc.GroupName && uc.Checked)
                                  {
                                      uc.Checked = false;
                                      return;
                                  }
                              }
                          }
                      }
                  }

                  private void Radio_MouseDown(object sender, MouseEventArgs e)
                  {
                      this.Checked = true;
                  }

                  private void UCRadioButton_Load(object sender, EventArgs e)
                  {
                      if (this.Parent != null && this._checked)
                      {
                          foreach (Control c in this.Parent.Controls)
                          {
                              if (c is UCRadioButton && c != this)
                              {
                                  UCRadioButton uc = (UCRadioButton)c;
                                  if (_groupName == uc.GroupName && uc.Checked)
                                  {
                                      Checked = false;
                                      return;
                                  }
                              }
                          }
                      }
                  }
              }
          }
          namespace HZH_Controls.Controls
          {
              partial class UCRadioButton
              {
                  ///  
                  /// 必需的設(shè)計(jì)器變量。
                  /// 

                  private System.ComponentModel.IContainer components = null;

                  ///  
                  /// 清理所有正在使用的資源。
                  /// 

                  ///  如果應(yīng)釋放托管資源,為 true;否則為 false。
                  protected override void Dispose(bool disposing)
                  {
                      if (disposing && (components != null))
                      {
                          components.Dispose();
                      }
                      base.Dispose(disposing);
                  }

                  #region 組件設(shè)計(jì)器生成的代碼

                  ///  
                  /// 設(shè)計(jì)器支持所需的方法 - 不要
                  /// 使用代碼編輯器修改此方法的內(nèi)容。
                  /// 

                  private void InitializeComponent()
                  {
                      this.label1 = new System.Windows.Forms.Label();
                      this.panel1 = new System.Windows.Forms.Panel();
                      this.SuspendLayout();
                      // 
                      // label1
                      // 
                      this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
                      this.label1.Font = new System.Drawing.Font("微軟雅黑"12F);
                      this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(62)))), ((int)(((byte)(62)))), ((int)(((byte)(62)))));
                      this.label1.Location = new System.Drawing.Point(180);
                      this.label1.Name = "label1";
                      this.label1.Padding = new System.Windows.Forms.Padding(5000);
                      this.label1.Size = new System.Drawing.Size(21530);
                      this.label1.TabIndex = 3;
                      this.label1.Text = "單選按鈕";
                      this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
                      this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Radio_MouseDown);
                      // 
                      // panel1
                      // 
                      this.panel1.BackgroundImage = global::HZH_Controls.Properties.Resources.radioButton0;
                      this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
                      this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
                      this.panel1.Location = new System.Drawing.Point(00);
                      this.panel1.Name = "panel1";
                      this.panel1.Size = new System.Drawing.Size(1830);
                      this.panel1.TabIndex = 2;
                      this.panel1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Radio_MouseDown);
                      // 
                      // UCRadioButton
                      // 
                      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
                      this.Controls.Add(this.label1);
                      this.Controls.Add(this.panel1);
                      this.Name = "UCRadioButton";
                      this.Size = new System.Drawing.Size(23330);
                      this.Load += new System.EventHandler(this.UCRadioButton_Load);
                      this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Radio_MouseDown);
                      this.ResumeLayout(false);

                  }

                  #endregion

                  private System.Windows.Forms.Label label1;
                  private System.Windows.Forms.Panel panel1;
              }
          }

          用處及效果

          用途: 就是單選框

          效果:

          最后的話

          如果你喜歡的話,請(qǐng)到 https://gitee.com/kwwwvagaa/net_winform_custom_control 點(diǎn)個(gè)星星吧,另本站轉(zhuǎn)載地址:https://dotnet9.com/5288.html。

          • 作者:冰封一夏
          • 出處:http://www.hzhcontrols.com/doc.html
          • 本文版權(quán)歸作者所有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明, 且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
          • GitHub:https://github.com/kwwwvagaa/NetWinformControl
          • 碼云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git

          Dotnet9網(wǎng)站常駐編輯


             

          長(zhǎng)按關(guān)注我,

          歡迎技術(shù)交流!

          -好東西要轉(zhuǎn)發(fā),設(shè)為"星標(biāo)"★搶先看-

          點(diǎn)擊閱讀原文,查看HZHControls站點(diǎn)更多博文。

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本无码中文字幕综合一区 | 五月婷婷aa | 成人午夜毛片 | 在线播放国内精品 | 久久三级|