国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#中添加自制控件

這篇具有很好參考價(jià)值的文章主要介紹了C#中添加自制控件。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

先看最終成品為一個(gè)可以在XY坐標(biāo)系下,進(jìn)行點(diǎn)位顯示的控件

c# 自定義控件,C#學(xué)習(xí),c#,開發(fā)語言

制作過程:

1.添加用戶控件類

c# 自定義控件,C#學(xué)習(xí),c#,開發(fā)語言

2.進(jìn)入代碼編輯頁面

套路式開發(fā):繼承 UserControl? ?? public partial class PointCurve : UserControl

初始化過程:

        public PointCurve()
        {
            InitializeComponent();
            //設(shè)置控件樣式
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); //減少閃爍
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);  //啟用雙緩沖技術(shù)
            this.SetStyle(ControlStyles.ResizeRedraw, true); //根據(jù)窗口大小的重新繪制指令
            this.SetStyle(ControlStyles.Selectable, true);//激活與用戶的交互響應(yīng)
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);//支持透明背景色
            this.SetStyle(ControlStyles.UserPaint, true);   //用戶自己控制繪制

        }

畫圖類繪制對象的三大件:

? ? ? ?//畫布
? ? ? ? private Graphics g;
? ? ? ? //畫筆
? ? ? ? private Pen p;
? ? ? ? //畫刷
? ? ? ? private SolidBrush sb;

控件屬性:(顯示在加載進(jìn)入工具箱后的屬性界面)

       
/****************原點(diǎn)****************************************/
        private int orginGap = 20;   //內(nèi)部調(diào)用數(shù)值
        [Browsable(true)]            //在屬性界面顯示
        [Category("自定義屬性")]     //分組類別
        [Description("原點(diǎn)坐標(biāo)")]     //顯示名稱

        public int OriginGap        //外部用戶交互變量
        {
            get { return orginGap; }
            set
            {
                if (value <= 0)
                {
                    return;
                }
                orginGap = value;
                this.Invalidate();   //外部改變后重新繪制
            
            }
        
        }
/****************X軸最大值****************************************/
        private float maxXAxis = 70000.0f;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("X軸最大值")]
        public float MaxXAxis
        {
            get { return maxXAxis; }
            set { maxXAxis = value;
                this.Invalidate();   //重新繪制
            }
            
        }

/****************Y軸最大值****************************************/

        private float maxYAxis = 70000.0f;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("Y軸最大坐標(biāo)值")]
        public float MaxYAxis
        {
            get { return maxYAxis; }
            set { maxYAxis = value;
                this.Invalidate();   //重新繪制
            }
        }


/****************位置坐標(biāo)1X軸坐標(biāo)****************************************/

       [Browsable(true)]
        [Category("自定義屬性")]
        [Description("位置坐標(biāo)1X軸坐標(biāo)")]
        public int ReclaimerXAxis
        {
            get { return reclaimerXAxis; }
            set
            {
                reclaimerXAxis = value;
                this.Invalidate();
            }
        }



/****************位置坐標(biāo)1Y軸坐標(biāo)****************************************/

       private int reclaimerYAxis = 0;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("位置坐標(biāo)1Y軸坐標(biāo)")]
        public int ReclaimerYAxis
        {
            get { return reclaimerYAxis; }
            set
            {
                reclaimerYAxis = value;
                this.Invalidate();
            }
        }

……想顯示多少個(gè)坐標(biāo)點(diǎn)可以自由添加




/****************顏色屬性添加****************************************/

       private Color reclaimerColor = Color.Blue;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("坐標(biāo)點(diǎn)顏色")]
        public Color ReclaimerColor
        {
            get { return reclaimerColor; }
            set
            {
                reclaimerColor = value;
                this.Invalidate();
            }
        }


/****************字符串屬性添加****************************************/
        private string reclaimerStr = "位置1";

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("位置1字符串")]
        public string ReclaimerStr
        {
            get { return reclaimerStr; }
            set
            {
                reclaimerStr = value;
                this.Invalidate();
            }
        }
/****************繪制點(diǎn)直徑屬性添加****************************************/
        private int pointdiameter = 5;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("繪制點(diǎn)直徑")]
        public int Pointdiameter
        {
            get { return pointdiameter; }
            set
            {
                pointdiameter = value;
                this.Invalidate();
            }
        }














以上信息都是屬性信息,不涉及邏輯,屬于為了實(shí)現(xiàn)自己繪制目的而定義的成員變量

接下來重寫的OnPaint函數(shù)是真正的繪制過程,每次用戶改變屬性信息時(shí),由于執(zhí)行了? this.Invalidate();,都會(huì)后臺(tái)去調(diào)用OnPaint函數(shù),從而實(shí)現(xiàn)位置更新。

下面函數(shù)中涉及一些計(jì)算過程,其實(shí)是由于窗體繪圖默認(rèn)原點(diǎn)是左上角,而我們習(xí)慣的坐標(biāo)系原點(diǎn)的左下角,里面的計(jì)算過程是為了將我們輸入的位置坐標(biāo)進(jìn)行轉(zhuǎn)換的過程,無需過分糾結(jié),理解原理,this.Height.,this.with為實(shí)際的繪圖畫布大小

  protected override void OnPaint(PaintEventArgs e)  //執(zhí)行重繪指令時(shí)會(huì)被調(diào)用
        {
            base.OnPaint(e);

            //繪制過程

            //繪制畫布
            g = e.Graphics;
            //設(shè)置畫布
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//消除鋸齒
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

            //正式繪制

            //設(shè)置畫筆

            p = new Pen(Color.Black, 1.5f);
            p.CustomEndCap = new AdjustableArrowCap(p.Width * 3, p.Width * 4, true);  //結(jié)束端采用箭頭樣式

            //繪制X軸
            g.DrawLine(p, new Point(orginGap, this.Height - orginGap), new Point(this.Width - orginGap, this.Height - orginGap));

            //繪制Y軸
            g.DrawLine(p, new Point(orginGap, this.Height - orginGap), new Point(orginGap, orginGap));

            //繪制原點(diǎn)
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Center;//字符中心居中
            sf.LineAlignment = StringAlignment.Center;//線中心居中
            g.DrawString("0", this.Font, new SolidBrush(Color.Black), new Rectangle(0, this.Height - orginGap, orginGap, orginGap), sf);
            //繪制X軸最大
            g.DrawString(maxXAxis.ToString(), this.Font, new SolidBrush(Color.Black), new Rectangle(this.Width -50, this.Height -orginGap+5, 50, orginGap), sf);
            //繪制Y軸最大
            g.DrawString(maxYAxis.ToString(), this.Font, new SolidBrush(Color.Black), new Rectangle(0, 0, 50, orginGap), sf);

            //繪制取料點(diǎn)

            float reclaimerX = (this.Width - 2 * orginGap) / maxXAxis * reclaimerXAxis + orginGap;
            float reclaimerY = this.Height - ((this.Height - 2 * orginGap) / maxYAxis * reclaimerYAxis + orginGap);
            g.FillEllipse(new SolidBrush(reclaimerColor), new RectangleF(reclaimerX - 0.5f * pointdiameter, reclaimerY - 0.5f * pointdiameter, pointdiameter, pointdiameter));

            g.DrawString(reclaimerStr, this.Font, new SolidBrush(reclaimerColor), new RectangleF(reclaimerX - 25.0f, reclaimerY - 20.0f, 50.0f, 20.0f), sf);

            //繪制加工點(diǎn)

            float processX = (this.Width - 2 * orginGap) / maxXAxis * processXAxis + orginGap;

            float processY = this.Height - ((this.Height - 2 * orginGap) / maxYAxis * processYAxis + orginGap);

            g.FillEllipse(new SolidBrush(processColor), new RectangleF(processX - 0.5f * pointdiameter, processY - 0.5f * pointdiameter, pointdiameter, pointdiameter));

            g.DrawString(processStr, this.Font, new SolidBrush(processColor), new RectangleF(processX - 25.0f, processY - 20.0f, 50.0f, 20.0f), sf);

            //繪制出料點(diǎn)

            float outletX = (this.Width - 2 * orginGap) / maxXAxis * outletXAxis + orginGap;

            float outletY = this.Height - ((this.Height - 2 * orginGap) / maxYAxis * outletYAxis + orginGap);

            g.FillEllipse(new SolidBrush(outletColor), new RectangleF(outletX - 0.5f * pointdiameter, outletY - 0.5f * pointdiameter, pointdiameter, pointdiameter));

            g.DrawString(outletStr, this.Font, new SolidBrush(outletColor), new RectangleF(outletX - 25.0f, outletY - 20.0f, 50.0f, 20.0f), sf);


        }

下面附完整代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-761116.html

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Drawing.Drawing2D;

namespace WindowsFormsApp1
{
    public partial class PointCurve : UserControl
    {
        public PointCurve()
        {
            InitializeComponent();
            //設(shè)置控件樣式
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); //減少閃爍
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);  //啟用雙緩沖技術(shù)
            this.SetStyle(ControlStyles.ResizeRedraw, true); //根據(jù)窗口大小的重新繪制指令
            this.SetStyle(ControlStyles.Selectable, true);//激活與用戶的交互響應(yīng)
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);//支持透明背景色
            this.SetStyle(ControlStyles.UserPaint, true);   //用戶自己控制繪制

        }

        #region   繪制對象的創(chuàng)建
        //畫布
        private Graphics g;
        //畫筆
        private Pen p;
        //畫刷
        private SolidBrush sb;

        #endregion

        #region  控件屬性
        private int orginGap = 20;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("原點(diǎn)坐標(biāo)")]

        public int OriginGap
        {
            get { return orginGap; }
            set
            {
                if (value <= 0)
                {
                    return;
                }
                orginGap = value;
                this.Invalidate();   //重新繪制
            
            }
        
        }

        private float maxXAxis = 70000.0f;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("X軸最大值")]
        public float MaxXAxis
        {
            get { return maxXAxis; }
            set { maxXAxis = value;
                this.Invalidate();   //重新繪制
            }
            
        }

        private float maxYAxis = 70000.0f;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("Y軸最大坐標(biāo)值")]
        public float MaxYAxis
        {
            get { return maxYAxis; }
            set { maxYAxis = value;
                this.Invalidate();   //重新繪制
            }
        }

        private int reclaimerXAxis = 0;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("取料口X軸坐標(biāo)")]
        public int ReclaimerXAxis
        {
            get { return reclaimerXAxis; }
            set
            {
                reclaimerXAxis = value;
                this.Invalidate();
            }
        }

        private int reclaimerYAxis = 0;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("取料口Y軸坐標(biāo)")]
        public int ReclaimerYAxis
        {
            get { return reclaimerYAxis; }
            set
            {
                reclaimerYAxis = value;
                this.Invalidate();
            }
        }

        private int processXAxis = 0;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("加工處X軸坐標(biāo)")]
        public int ProcessXAxis
        {
            get { return processXAxis; }
            set
            {
                processXAxis = value;
                this.Invalidate();
            }
        }

        private int processYAxis = 0;
        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("加工處Y軸坐標(biāo)")]
        public int ProcessYAxis
        {
            get { return processYAxis; }
            set
            {
                processYAxis = value;
                this.Invalidate();
            }
        }


        private int outletXAxis = 0;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("出料口X軸坐標(biāo)")]
        public int OutletXAxis
        {
            get { return outletXAxis; }
            set
            {
                outletXAxis = value;
                this.Invalidate();
            }
        }


        private int outletYAxis = 0;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("出料口Y軸坐標(biāo)")]
        public int OutletYAxis
        {
            get { return outletYAxis; }
            set
            {
                outletYAxis = value;
                this.Invalidate();
            }
        }

        private Color reclaimerColor = Color.Blue;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("取料口點(diǎn)顏色")]
        public Color ReclaimerColor
        {
            get { return reclaimerColor; }
            set
            {
                reclaimerColor = value;
                this.Invalidate();
            }
        }

        private Color processColor = Color.Green;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("加工處點(diǎn)顏色")]
        public Color ProcessColor
        {
            get { return processColor; }
            set
            {
                processColor = value;
                this.Invalidate();
            }
        }

        private Color outletColor = Color.Red;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("出料口點(diǎn)顏色")]
        public Color OutletColor
        {
            get { return outletColor; }
            set
            {
                outletColor = value;
                this.Invalidate();
            }
        }

        private string reclaimerStr = "取料口";

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("取料口字符串")]
        public string ReclaimerStr
        {
            get { return reclaimerStr; }
            set
            {
                reclaimerStr = value;
                this.Invalidate();
            }
        }

        private string processStr = "加工處";

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("加工處字符串")]
        public string ProcessStr
        {
            get { return processStr; }
            set
            {
                processStr = value;
                this.Invalidate();
            }
        }
        private string outletStr = "出料口";

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("出料口字符串")]
        public string OutletStr
        {
            get { return outletStr; }
            set
            {
                outletStr = value;
                this.Invalidate();
            }
        }

        private int pointdiameter = 5;

        [Browsable(true)]
        [Category("自定義屬性")]
        [Description("繪制點(diǎn)直徑")]
        public int Pointdiameter
        {
            get { return pointdiameter; }
            set
            {
                pointdiameter = value;
                this.Invalidate();
            }
        }

        #endregion
        protected override void OnPaint(PaintEventArgs e)  //執(zhí)行重繪指令時(shí)會(huì)被調(diào)用
        {
            base.OnPaint(e);

            //繪制過程

            //繪制畫布
            g = e.Graphics;
            //設(shè)置畫布
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//消除鋸齒
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
            g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;

            //正式繪制

            //設(shè)置畫筆

            p = new Pen(Color.Black, 1.5f);
            p.CustomEndCap = new AdjustableArrowCap(p.Width * 3, p.Width * 4, true);  //結(jié)束端采用箭頭樣式

            //繪制X軸
            g.DrawLine(p, new Point(orginGap, this.Height - orginGap), new Point(this.Width - orginGap, this.Height - orginGap));

            //繪制Y軸
            g.DrawLine(p, new Point(orginGap, this.Height - orginGap), new Point(orginGap, orginGap));

            //繪制原點(diǎn)
            StringFormat sf = new StringFormat();
            sf.Alignment = StringAlignment.Center;//字符中心居中
            sf.LineAlignment = StringAlignment.Center;//線中心居中
            g.DrawString("0", this.Font, new SolidBrush(Color.Black), new Rectangle(0, this.Height - orginGap, orginGap, orginGap), sf);
            //繪制X軸最大
            g.DrawString(maxXAxis.ToString(), this.Font, new SolidBrush(Color.Black), new Rectangle(this.Width -50, this.Height -orginGap+5, 50, orginGap), sf);
            //繪制Y軸最大
            g.DrawString(maxYAxis.ToString(), this.Font, new SolidBrush(Color.Black), new Rectangle(0, 0, 50, orginGap), sf);

            //繪制取料點(diǎn)

            float reclaimerX = (this.Width - 2 * orginGap) / maxXAxis * reclaimerXAxis + orginGap;
            float reclaimerY = this.Height - ((this.Height - 2 * orginGap) / maxYAxis * reclaimerYAxis + orginGap);
            g.FillEllipse(new SolidBrush(reclaimerColor), new RectangleF(reclaimerX - 0.5f * pointdiameter, reclaimerY - 0.5f * pointdiameter, pointdiameter, pointdiameter));

            g.DrawString(reclaimerStr, this.Font, new SolidBrush(reclaimerColor), new RectangleF(reclaimerX - 25.0f, reclaimerY - 20.0f, 50.0f, 20.0f), sf);

            //繪制加工點(diǎn)

            float processX = (this.Width - 2 * orginGap) / maxXAxis * processXAxis + orginGap;

            float processY = this.Height - ((this.Height - 2 * orginGap) / maxYAxis * processYAxis + orginGap);

            g.FillEllipse(new SolidBrush(processColor), new RectangleF(processX - 0.5f * pointdiameter, processY - 0.5f * pointdiameter, pointdiameter, pointdiameter));

            g.DrawString(processStr, this.Font, new SolidBrush(processColor), new RectangleF(processX - 25.0f, processY - 20.0f, 50.0f, 20.0f), sf);

            //繪制出料點(diǎn)

            float outletX = (this.Width - 2 * orginGap) / maxXAxis * outletXAxis + orginGap;

            float outletY = this.Height - ((this.Height - 2 * orginGap) / maxYAxis * outletYAxis + orginGap);

            g.FillEllipse(new SolidBrush(outletColor), new RectangleF(outletX - 0.5f * pointdiameter, outletY - 0.5f * pointdiameter, pointdiameter, pointdiameter));

            g.DrawString(outletStr, this.Font, new SolidBrush(outletColor), new RectangleF(outletX - 25.0f, outletY - 20.0f, 50.0f, 20.0f), sf);


        }

        private void PointCurve_Load(object sender, EventArgs e)
        {

        }
    }
}

到了這里,關(guān)于C#中添加自制控件的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C#在winForm窗體中添加一個(gè)可以自由拖動(dòng)的控件

    C#在winForm窗體中添加一個(gè)可以自由拖動(dòng)的控件

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 文章目錄 目錄 文章目錄 一、實(shí)現(xiàn)步驟 1.創(chuàng)建一個(gè)新的Windows窗體項(xiàng)目 2.添加控件如圖 3.代碼部分 總結(jié) textBox1=鼠標(biāo)在需要拖動(dòng)的控件中的坐標(biāo) X 值 textBox2=鼠標(biāo)在需要拖動(dòng)的控件中的坐標(biāo) Y 值 textBox3=需要

    2024年01月19日
    瀏覽(33)
  • C# 添加現(xiàn)有的窗體的時(shí)候,為何窗體的控件不顯示了?

    C# 添加現(xiàn)有的窗體的時(shí)候,為何窗體的控件不顯示了?

    有的項(xiàng)目中一些功能是可以復(fù)用的,將原始項(xiàng)目中的窗體文件添加到新項(xiàng)目時(shí),發(fā)現(xiàn)有一些問題。添加完之后,打開的窗體發(fā)現(xiàn)沒有顯示任何控件,窗體的大小還變小了? 將Form1.cs Form1.resx Form1.Designer 三個(gè)文件直接復(fù)制到新項(xiàng)目的目錄下,然后直接在新項(xiàng)目上選擇添加現(xiàn)有項(xiàng)

    2024年02月10日
    瀏覽(18)
  • C# 通過自定義控件實(shí)現(xiàn)炫酷的時(shí)間顯示

    C# 通過自定義控件實(shí)現(xiàn)炫酷的時(shí)間顯示

    先看效果 話不多說,直接上代碼 基礎(chǔ)的自定義控件 LED_Num

    2024年02月09日
    瀏覽(25)
  • C# Window form 自定義控件的結(jié)構(gòu)和設(shè)計(jì)(三)

    C# Window form 自定義控件的結(jié)構(gòu)和設(shè)計(jì)(三)

    C# Window form 自定義控件的結(jié)構(gòu)和設(shè)計(jì) (三) 一、前面介紹了如何來創(chuàng)建第一個(gè)自定義的控件,以及一個(gè)測試程序。下面我們來看下如何在自定義控件中添加屬性。 C#和其他.NET語言支持屬性作為語言的第一類成員。把屬性作為語言的基礎(chǔ)屬性有兩點(diǎn)主要的有點(diǎn): ①利用屬性使放

    2024年04月15日
    瀏覽(19)
  • C# 控件基礎(chǔ)2——屬性配置控件PropertyGrid使用詳解,PropertyGrid自定義下拉框TypeConverter,PropertyGrid自定義彈窗UITypeEditor,特性

    C# 控件基礎(chǔ)2——屬性配置控件PropertyGrid使用詳解,PropertyGrid自定義下拉框TypeConverter,PropertyGrid自定義彈窗UITypeEditor,特性

    最近比較忙,一段時(shí)間沒寫博文了。最近仿vs做了一個(gè)自定義界面的功能,使用到了PropertyGrid控件,讓我的代碼量減少了很多,就抽個(gè)晚上把PropertyGrid控件的使用技巧分享一下。 PropertyGrid控件估計(jì)大家都很熟悉,但凡使用winform開發(fā)過界面的都認(rèn)識(shí),就是配置控件屬性的控件,

    2024年02月09日
    瀏覽(21)
  • C#——表格開發(fā)之DataGridView控件

    C#——表格開發(fā)之DataGridView控件

    目錄 一、概要 二、手動(dòng)填充數(shù)據(jù) 1、如何手動(dòng)填充數(shù)據(jù) 2、如何插入一行數(shù)據(jù) 3、如何修改單元格值 三、DataGridView控件綁定數(shù)據(jù)源 1、概述 2、將DataGridView綁定到BindingSource 使用DataGridView控件,您可以顯示和編輯來自許多不同類型數(shù)據(jù)源的表格數(shù)據(jù)。 DataGridView控件為顯示數(shù)據(jù)提

    2024年02月03日
    瀏覽(23)
  • Visual Studio C# WinForm開發(fā)入門(3):各種控件介紹

    Visual Studio C# WinForm開發(fā)入門(3):各種控件介紹

    窗口就是打開程序我們所面對的一個(gè)面板,里面可以添加各種控件,如下圖所示,我們可以在屬性欄設(shè)置其標(biāo)題名稱、圖標(biāo)、大小等。 雙擊標(biāo)題框,會(huì)生成Load函數(shù),也可以到事件里面去找 Load函數(shù)是窗口生成后需要執(zhí)行的事件函數(shù)。 可以在里面加一些初始化函數(shù)。 (1)Na

    2024年02月09日
    瀏覽(24)
  • Visual Studio C# WinForm開發(fā)入門(5):TabControl 控件使用

    Visual Studio C# WinForm開發(fā)入門(5):TabControl 控件使用

    TabContrl選項(xiàng)卡控件可創(chuàng)建標(biāo)簽化窗口,在實(shí)際 編程中經(jīng)常用到,該控件的作用是將相關(guān)的組件組合到一系列選項(xiàng)卡頁面上。 比如下面的例子,在tabPage1頁面和tabPage2頁面各放了2個(gè)checkBox控件,通過點(diǎn)擊不同page即可切換: 1、添加和刪除TabControl控件中的選項(xiàng)卡 有兩種方法: 第

    2024年02月07日
    瀏覽(32)
  • Visual Studio C# WinForm開發(fā)入門(6):TreeView 控件使用

    Visual Studio C# WinForm開發(fā)入門(6):TreeView 控件使用

    TreeView控件用樹顯示節(jié)點(diǎn)層次。 例如:頂級目錄是根(C:),C盤下的每個(gè)子目錄都是子節(jié)點(diǎn),而每個(gè)子目錄又都有自己的子節(jié)點(diǎn) TreeView屬性和方法: 屬性 說明 CheckBoxes 表示節(jié)點(diǎn)旁邊是否出現(xiàn)復(fù)選框 ImageList 指定一個(gè)包含節(jié)點(diǎn)圖標(biāo)的ImageList對象。ImageList對象是一個(gè)包含Image對象的

    2024年02月02日
    瀏覽(47)
  • 【C#學(xué)習(xí)記錄】如何讓界面控件實(shí)現(xiàn)自適應(yīng)布局(Winform)

    【C#學(xué)習(xí)記錄】如何讓界面控件實(shí)現(xiàn)自適應(yīng)布局(Winform)

    小伙伴們大家好,我是雷工! 在軟件界面設(shè)計(jì)中,客戶常常要求設(shè)計(jì)的界面可以隨意縮放,縮放過程中,界面中的按鈕等控件也會(huì)隨著窗體變大縮小自動(dòng)調(diào)整顯示位置和尺寸大小。在C#的Winform窗體中如何實(shí)現(xiàn)這個(gè)效果,下面我們一起學(xué)習(xí)下。 本樣例的程序運(yùn)行環(huán)境具體如下

    2023年04月21日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包