c#自定义控件_c#自定义控件ajax请求 - CSDN
精华内容
参与话题
  • C# 自定义控件制作和使用实例(winform) 2018年04月26日 15:01:11乌班图ysm阅读数 5788 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012278016/article/details/79929765 C#...

    C# 自定义控件制作和使用实例(winform)

    2018年04月26日 15:01:11 乌班图ysm 阅读数 5788

     版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012278016/article/details/79929765

    C# 自定义用户控件

     此处为转载文章,用于记录自我学习过程,原文链接地址http://blog.csdn.net/xiongxuanwen/article/details/2605109 

     

    本例是制作一个简单的自定义控件,然后用一个简单的测试程序,

    对于初学者来说,本例子比较简单,只能起到抛石引玉的效果。

    我也是在学习当中,今后会将自己所学的逐步写出来和大家交流共享。

     

    第一步:新建一个控件库项目:myControl

     

    第二步:从工具箱里面拖动1个PictureBox、1个Button、6个Lable控件到用户界面上,布局如下:

           如上图,设置pictureBox的Name为picBox,背景为白色,Button的Name为btnOpen,另外靠左的三个Lable的Text属性分别为:文件名称,文件大小,文件尺寸,靠右的三个Lable的Name分别为:lblName, lblLength, lblSize.

     

    第三步:添加处理程序代码

    在btnOpen的Click事件写入代码,打开一个打开文件对话框,选择一个图形文件,打开并将它显示在picBox上。

    private void btnOpen_Click(object sender, EventArgs e){
    OpenFileDialog ofdPic = new OpenFileDialog();
    ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF)|*.jpg;*.jpeg;*.gif";
    ofdPic.FilterIndex = 1;
    ofdPic.RestoreDirectory = true;
    ofdPic.FileName = "";
    if (ofdPic.ShowDialog() == DialogResult.OK)
    {
    string sPicPaht = ofdPic.FileName.ToString();
    FileInfo fiPicInfo = new FileInfo(sPicPaht);
    long lPicLong = fiPicInfo.Length / 1024;
    string sPicName = fiPicInfo.Name;
    string sPicDirectory = fiPicInfo.Directory.ToString();
    string sPicDirectoryPath = fiPicInfo.DirectoryName;
    Bitmap bmPic = new Bitmap(sPicPaht);
    if (lPicLong > 400)
    {
    MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!");
    }
    else
    {
    Point ptLoction = new Point(bmPic.Size);
    if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height)
    {
    picBox.SizeMode = PictureBoxSizeMode.Zoom;
    }
    else
    {
    picBox.SizeMode = PictureBoxSizeMode.CenterImage;
    }
    }
    picBox.LoadAsync(sPicPaht);
    lblName.Text = sPicName;
    lblLength.Text = lPicLong.ToString() + " KB";
    lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString();
    }
    }

     

    第四步:测试控件

    按F5启动调试,弹出如下窗体:

    单击“打开”按钮,弹出打开文件对话框:

    选择一张图片,单击“打开”,可以看到在picBox上显示了打开的图片:

    第五步:查看成生的控件文件,到该项目文件目录下的bin->debug中可找到。

     

    下篇:控件测试

    第一步:新建一个C# Windows 应用程序,名为TestMyButton.

     

    第二步:增加自定义的用户控件

    右键单击工具箱中任意一个控件,弹出右键菜单如下:

    单击“选择项”,弹出如下对话框:

    单击“浏览”,弹出打开对话框:

    选中控件文件 mybutton.dll ,单击“打开”按钮,回到自定义工具箱,系统会默认把你刚才选中的控件打上 勾。

    返回vs编辑器,可看到工具箱中多出了一个UserControl:

     

    第三步:拖动1个自定义的控件到测试窗口

    第四步 测试程序

    单击“打开”按钮:

    选择一个图片,打开,显示该图:

    测试成功

    展开全文
  • C#自定义控件的创建

    万次阅读 2019-06-14 14:19:51
    C#自定义控件的创建 在编程过程中,现有的c#控件远远不能满足我们的需要,这时候就需要我们自己来开发控件了。本人在开发自定义控件时走了一些弯路,写下此篇,希望能够给有需要的朋友一些帮助,也借此加深自己的...

    写在前面:

    个人网站:https://chenqi.autmake.com/

    C#自定义控件的创建

    在编程过程中,现有的c#控件远远不能满足我们的需要,这时候就需要我们自己来开发控件了。本人在开发自定义控件时走了一些弯路,写下此篇,希望能够给有需要的朋友一些帮助,也借此加深自己的印象。


    1.创建自定义控件

    选择【经典桌面】——【窗体控件库】

    2.添加控件,组合成一个新的控件

    自定义控件功能:打开一张图片,将图片展示在pictureBox控件中,并将图片的名称、大小、尺寸显示出来

    控件如下:

     pictureBox1:命名为picBox

     label1~label6  :左边三个显示文字,右边三个命名为:lblName  lblLength  lblSize

     button1:命名为btnOpen

     代码如下:

     private void btnOpen_Click(object sender, EventArgs e)
            {
                OpenFileDialog ofdPic = new OpenFileDialog();
                ofdPic.Filter = "JPG(*.JPG;*.JPEG);gif文件(*.GIF);PNG(*.PNG)|*.jpg;*.jpeg;*.gif;*.png";
                ofdPic.FilterIndex = 1;
                ofdPic.RestoreDirectory = true;
                ofdPic.FileName = "";
                if (ofdPic.ShowDialog() == DialogResult.OK)
                {
                    string sPicPaht = ofdPic.FileName.ToString();
                    FileInfo fiPicInfo = new FileInfo(sPicPaht);
                    long lPicLong = fiPicInfo.Length / 1024;
                    string sPicName = fiPicInfo.Name;
                    string sPicDirectory = fiPicInfo.Directory.ToString();
                    string sPicDirectoryPath = fiPicInfo.DirectoryName;
                    Bitmap bmPic = new Bitmap(sPicPaht);
                    if (lPicLong > 400)
                    {
                        MessageBox.Show("此文件大小為" + lPicLong + "K;已超過最大限制的K范圍!");
                    }
                    else
                    {
                        Point ptLoction = new Point(bmPic.Size);
                        if (ptLoction.X > picBox.Size.Width || ptLoction.Y > picBox.Size.Height)
                        {
                            picBox.SizeMode = PictureBoxSizeMode.Zoom;
                        }
                        else
                        {
                            picBox.SizeMode = PictureBoxSizeMode.CenterImage;
                        }
                    }
                    picBox.LoadAsync(sPicPaht);
                    lblName.Text = sPicName;
                    lblLength.Text = lPicLong.ToString() + " KB";
                    lblSize.Text = bmPic.Size.Width.ToString() + "×" + bmPic.Size.Height.ToString();
                }
            }

    点击【解决方案】,右键弹出窗口,点击【生成解决方案】

    至此,自定义控件的创建已经完成!

    生成的控件路径在Debug文件夹下,dll文件

    3.自定义控件测试

    新建windows窗体应用程序

    发现在左边的控件工具栏中并没有刚刚的自定义控件,不要急!!

    选择工具下的【选择工具箱项】

    浏览,选择dll文件路径,注意路径中不能包含中文字符,切记!否则会出错!

    添加成功后,会发现工具箱中出现了刚刚定义的控件。

    测试结果:

    展开全文
  • C#开发之自定义控件的简单使用

    万次阅读 2012-10-12 10:34:27
    1.开发自定义控件 自定义控件在开发中算常用的技术,因为在解决实际问题时往往.NET Framework提供的控件不能满足所有的需求,还好可以根据.NET Framework提供的基础控件组合扩展成自定义控件。 开发自定义控件需要...

    1.开发自定义控件
    自定义控件在开发中算常用的技术,因为在解决实际问题时往往.NET Framework提供的控件不能满足所有的需求,还好可以根据.NET Framework提供的基础控件组合扩展成自定义控件。
    开发自定义控件需要先新建一个Windows窗体控件库的项目,在该项目中设计UserControl,步骤如下图:

    图片123


    说明:
    该自定义控件包括一个label和textbox,label用来显示标题,textbox用来显示内容部分。该控件的创建可以传递参数一个实体类,实体类包括两个属性值,一个是Name用来给label赋值,一个是Content用来给textbox赋值。当然,实体类可以自己设计,也可以采用其他传递参数的方式。
    2.使用(调用)自定义控件
    自定义控件写好之后,如果想向.NET Framework提供的控件一样在工具箱就可以看到,直接拖拽出来使用的话,需要先将自定义控件的项目生成的DLL,然后在项目工具箱中,新建一个选项卡作为自定义的工具选项卡,右键选择项浏览选择该自定义控件的DLL文件加载进去即可。
    加载完成后自定义控件就如图所示的直接显示出来了。
    如果想在代码中添加的话,先将该DLL添加引用即可。如图所示:
     图片456


    3.自定义控件使用小结
    自定义控件的使用,可以将一些复杂的UI模块化,使设计简洁,也方便维护与扩展.如果想设计更加好看的自定义控件可以采用WPF或者其他三方工具(比如RadControls for WinForms)等来创建自定义控件窗体控件库项目。

    展开全文
  • C# 自定义控件的实现

    千次阅读 2016-02-23 09:13:06
    我们在开发Winform程序的时候,需要经常性的对界面的一些控件进行初始化,或者经常简单的封装,以方便我们在界面设计过程中反复使用。本文主要介绍在我的一些项目中经常性的界面处理操作和代码,以便为大家开发的...

    http://www.cnblogs.com/wuhuacong/p/3968544.html

    Winform开发中常见界面的DevExpress处理操作

    我们在开发Winform程序的时候,需要经常性的对界面的一些控件进行初始化,或者经常简单的封装,以方便我们在界面设计过程中反复使用。本文主要介绍在我的一些项目中经常性的界面处理操作和代码,以便为大家开发的时候提供必要的参考。

    1、选择用户的控件封装操作

    在一些系统模块里面,我们需要选择系统人员作为经办人员的操作,如下面几个界面场景所示。

    我们注意到,一般在我们选择的时候,界面会弹出一个新的层给我们选择,里面通过列表详细展示相关的信息,还可以支持搜索,非常方便。

    当我们完成选择的时候,我们看到界面会只有一个人员名称的显示,不占用额外的地方显示。

    这种界面效果是如何实现的呢?下面进行详细的介绍。

    1)首先我们定义一个自定义控件,让其继承自XtraUserControl 即可。

        /// <summary>
        /// 经办人员、操作人员的选择控件封装
        /// </summary>
        public partial class OperatorSelectControl : XtraUserControl
        {

    2)然后在DevExpress的界面工具箱上拖动一个SearchLookUpEdit 控件到我们新的用户控件OperatorSelectControl 上。

    调整好用户界面控件的排版相关属性,就会得到下面的界面所示。

    3)在设计视图里面,我们为这个SearchLookUpEdit控件的GridView设置它的显示字段,如下所示,每个字段主要绑定FieldName(属性或者字段)和Caption(显示名称)。

    这些必备的处理操作完成后,我们可以通过代码或者设计器把这个控件的显示内容和存储内容进行设定,并绑定它的数据源即可(根据需要调用自己的函数),如下所示。

    复制代码
            private void OperatorSelectControl_Load(object sender, EventArgs e)
            {
                if (!this.DesignMode)
                {
                    txtOperator.Properties.ValueMember = "ID";
                    txtOperator.Properties.DisplayMember = "FullName";
                    txtOperator.Properties.DataSource = SecurityHelper.GetSimpleUsers();
                }
            }
    复制代码

    4)我们为了方便,还可以进一步处理控件的显示内容和返回的值内容,我们希望绑定值或者获取值的时候,使用Text属性就可以了,那么我们重载一下这个自定义控件的Text属性即可。

    复制代码
            public override string Text
            {
                get
                {
                    string result = "";
                    if (this.txtOperator.EditValue != null)
                    {
                        result = this.txtOperator.EditValue.ToString();
                    }
                    return result;
                }
                set
                {
                    this.txtOperator.EditValue = value;
                }
            }
    复制代码

    5)这样控件的操作就完成了,编译代码后,我们在工具箱上就可以看到最新的控件图标了。

    接着我们把相关的控件拖动到需要的地方(如果是界面和控件在相同的工程里面,注意需要移除重复的工程引用),重新编译系统代码,那么本文开始的界面效果就可以出现了。

     

    2、会员卡级别选择操作

    刚才说了,人员选择可以使用这种弹出列表选择的方式,其实很多地方可以用这个方式来进行选择,如一些相对比较少记录的信息就很适合这种显示方式,比如在会员管理里面的,会员卡级别的选择,也可以采用这种方式。

    这个模块的做法也和第一种很类似,有点不同的是,我需要选择后把会员卡的折扣也关联显示出来,那我们应该如何处理呢?

    1)定义控件和事件处理

    为了方便在控件选择后进行事件的触发处理,我在这里定义了一个事件处理器SelectedValueChanged

    复制代码
        /// <summary>
        /// 卡级选择控件
        /// </summary>
        public partial class CardGradeSelectControl : XtraUserControl
        {
            /// <summary>
            /// 选择项发生变化的事件处理
            /// </summary>
            public event EventHandler SelectedValueChanged;
    复制代码

    然后在内部控件的EditValue改变的时候,在其中的事件里面触发我们自定义的事件即可, 如下所示。

    复制代码
            private void txtCardGrade_EditValueChanged(object sender, EventArgs e)
            {
                if (SelectedValueChanged != null)
                {
                    SelectedValueChanged(sender, e);
                }
            }
    复制代码

    2)在窗体界面中自定义控件的事件调用

    在会员编辑界面里面,我们对这个卡级别的选择控件的自定义事件进行处理即可。

    处理事件里面,我们获取对应卡级别的优惠折扣(GetDiscountByGradeNo),然后绑定到界面的控件显示即可,这样就实现了联动效果了。

    复制代码
        public partial class FrmEditMember : BaseEditForm
        {
            /// <summary>
            /// 创建一个临时对象,方便在附件管理中获取存在的GUID
            /// </summary>
            private MemberInfo tempInfo = new MemberInfo();
    
            public FrmEditMember()
            {
                InitializeComponent();
    
                this.txtCardGrade.SelectedValueChanged += new EventHandler(txtCardGrade_SelectedValueChanged);
            }
    
            void txtCardGrade_SelectedValueChanged(object sender, EventArgs e)
            {
                string gradeNo = txtCardGrade.Text;
                if (!string.IsNullOrEmpty(gradeNo))
                {
                    this.txtDiscount.Value = BLLFactory<CardGrade>.Instance.GetDiscountByGradeNo(gradeNo);
                }
            }
    复制代码

     

    3、创建人员和创建时间的显示处理

    在我们窗体数据的编辑界面里面,为了友好显示,我们可能需要显示数据的创建人和创建时间。这种效果是如何实现的,我们来看看。

    1)数据显示时候处理

    数据显示的时候,可能是新增界面的显示,也可以是现有记录的显示,我们需要区分对待。

    如果是已有数据,我们需要解析创建人员的ID,显示已有时间即可;如果是新增界面,那么我们把当前登陆用户的名称显示出来,及显示当前时间即可。

    在设计模式里面,把控件设置为ReadOnly=true,不用编辑修改控件的值即可。

    复制代码
            /// <summary>
            /// 数据显示的函数
            /// </summary>
            public override void DisplayData()
            {
                InitDictItem();//数据字典加载(公用)
    
                if (!string.IsNullOrEmpty(ID))
                {
                    #region 显示信息
                    MemberInfo info = BLLFactory<WHC.Member.BLL.Member>.Instance.FindByID(ID);
                    if (info != null)
                    {
                        tempInfo = info;//重新给临时对象赋值,使之指向存在的记录对象
    
                        txtHandNo.Text = info.HandNo;
                        txtCardNo.Text = info.CardNo;
                        txtCardCode.Text = info.CardCode;
                        txtCardStatus.SetComboBoxItem(info.CardStatus.ToString());
                        txtOpenUser.Text = info.OpenUser;
    ..............
    
                        txtCreator.Text = SecurityHelper.GetFullNameByID(info.Creator);
                        txtCreateTime.SetDateTime(info.CreateTime);
                    }
                    #endregion             
                }
                else
                {this.txtOpenDate.DateTime = DateTime.Now;
                    this.txtHandNo.Text = IDUtils.NewId();
    
                    this.txtCreateTime.DateTime = DateTime.Now;
                    this.txtCreator.Text = LoginUserInfo.FullName;//默认为当前登录用户
                }
    
                this.portraitControl1.MemberID = tempInfo.ID;
                this.portraitControl1.BindPicture(tempInfo.ID);
    
                //tempInfo在对象存在则为指定对象,新建则是全新的对象,但有一些初始化的GUID用于附件上传
                SetAttachInfo(tempInfo);
            }
    复制代码

    但用户保存操作的时候,如果是新增数据,我们需要把当前时间和当前用户的信息记录到数据库里面,因此需要增加一些代码进行数据的关联处理。

    复制代码
            /// <summary>
            /// 新增状态下的数据保存
            /// </summary>
            /// <returns></returns>
            public override bool SaveAddNew()
            {
                MemberInfo info = tempInfo;//必须使用存在的局部变量,因为部分信息可能被附件使用
                SetInfo(info);
    
                info.Creator = LoginUserInfo.ID.ToString();
                info.CreateTime = DateTime.Now;
                info.Dept_ID = LoginUserInfo.DeptId;
                info.Company_ID = LoginUserInfo.CompanyId;
    
                try
                {
                    #region 新增数据
                    //检查是否还有其他相同关键字的记录
                    bool exist = BLLFactory<WHC.Member.BLL.Member>.Instance.IsExistKey("CardNo", info.CardNo);
                    if (exist)
                    {
                        MessageDxUtil.ShowTips("指定的【会员卡号】已经存在,不能重复添加,请修改");
                        return false;
                    }
    
                    bool succeed = BLLFactory<WHC.Member.BLL.Member>.Instance.Insert(info);
                    if (succeed)
                    {
                        //可添加其他关联操作
    
                        return true;
                    }
                    #endregion
                }
                catch (Exception ex)
                {
                    LogTextHelper.Error(ex);
                    MessageDxUtil.ShowError(ex.Message);
                }
                return false;
            }
    复制代码

    我们为了方便,一般是在数据库存储人员的ID,但是列表显示的时候,我们也就需要把对应的人员ID转换为人员名称了。

                this.winGridViewPager1.gridView1.CustomColumnDisplayText += new DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventHandler(gridView1_CustomColumnDisplayText);
    复制代码
            void gridView1_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
            {
                if (e.Column.FieldName == "Operator" || e.Column.FieldName == "Editor" || e.Column.FieldName == "Creator")
                {
                    if (e.Value != null)
                    {
                        e.DisplayText = SecurityHelper.GetFullNameByID(e.Value.ToString());
                    }
                }
            }
    复制代码

    展开全文
  • 最近想山寨一个下载软件,(下载中)任务列表想用自定义控件来实现,但不知道如何自定义一个任务列表控件(能在列表项中添加link,button,label等控件)。...最好能有C#自定义控件的电子书!谢谢!
  • C#将用户自定义控件添加到工具箱中

    千次阅读 2018-07-10 11:05:30
    将用户自定义控件添加到工具箱中,这样在以后的项目中,需要的时候可以像使用工具箱中其他控件一样使用自己设计的控件。工具——选项——Windows窗体设计器——常规——工具箱——自动填充工具箱——True...
  • C#自定义控件加滑动条的简单实现

    千次阅读 2016-03-17 10:57:55
    基本思路给自定义控件在外层在套一个自定义控件,外层自定义控件上放一个**panel**,设置 - panel.Dock = DockStyle.Fill; - panel.AutoScroll = true; 说明方法很简单,对于自定义控件的操作,需要再进行封装,所以...
  • C#自定义控件

    千次下载 热门讨论 2020-07-30 23:30:38
    C#自定义控件
  • C# WinForm 封装自定义组件(控件)Dll

    万次阅读 2015-04-23 20:46:11
    封装自定义控件很简单,没什么技术含量,这里通过封装自定义的数字文本框实例简单总结一下: 【1】新建自定义控件库 -- Windows Forms Control Library 【2】添加自定义组件 -- Component Class 【3】...
  • c#动态添加自定义控件方法

    千次阅读 2019-01-07 09:37:18
    在实际的WinForm及Win CE的项目开发过程中,常常会遇上一些个性化的模型展示,今天给大家演示如何创建自定义控件,及动态调用展示。 工具/原料 visual studio 2008 or visual studio 2010 2013等 方法/步骤 ...
  • C#自定义控件并在Form中进行调用由于项目的原因,要使用C#来实现一个演示系统,具体功能为:上位机使用TCP/IP协议通过网口发送数据,FPGA从网口抓取数据并进行一些处理,最后,将处理后的数据通过网口返回,并在电脑...
  • C# 自定义控件固定大小

    千次阅读 2014-11-15 16:38:41
    原文地址 今天做自定义,需要固定控件大小,一共找到了三种方法:  1.设置最大与最小值相等 2.在resize事件中指定大小 3.通过自定义设计器来禁止修改大小
  • 我就用c#写了一个Usercontrol,该自定义控件很简单,里面只有一个标签,作用是在主窗体读取 每条电脑记录时显示每台电脑的名字。同时,在该自定义控件的paint事件中,会读取每条电脑记录的状态字段。如果是正常的,...
  • C# 窗口缩放 自定义控件缩放

    千次阅读 2014-07-16 23:12:11
    C#中使用自定义控件时,如果放大和缩小
  • 如果自定义的UserControl在工具箱中没有显示出来,可能是系统设置不自动显示自定义控件所致,按如下设置即可在工具箱中显示自定义的UserControl控件了。 工具=》选项=》Windows窗体设计器=》常规=》...
  • c# 自定义控件透明,自定义透明窗体
  • 在学习C# Windows应用窗体时,利用用户自定义控件实现了一个小的开关控件。 参考:https://www.cnblogs.com/feiyangqingyun/archive/2013/06/15/3137597.html 先准备了两个好看的开关图片: 将图片资源导入项目...
  • c#设置自定义控件为透明背景

    千次阅读 2016-12-19 16:15:14
    public partial class UserControl1 : UserControl  {  public UserControl1()  {  InitializeComponent();  //设置Style支持透明背景色  this.SetStyl
  • C#本身提供了很强大的控件库,但是很多控件库的功能只是一些基本的功能,就比如最简单的按钮,C#提供了最基础的按钮使用方法,但是如果要增加一些功能,比如按钮按下要一个图片,弹起要另一个图片这样的工作。...
  • 主窗体中包含一个标签label1和一个按钮button1 代码如下: public void ChangeLabel(string text) { label1.Text = text; } private void button1_Click(object sender, EventArgs e) ...
1 2 3 4 5 ... 20
收藏数 49,403
精华内容 19,761
关键字:

c#自定义控件