winform自定义控件的使用

努力,奋斗的路上! 努力,奋斗的路上!     2022-09-08     251

关键词:

  c#的自定义控件还是很方便的,至少相对于c++而言。

  1,当然是建立一个windows 窗体空间库,我这里就是用vs 2015 ,工程名MyControl

  第二步。在自定义空间窗体内,拖放这样一组空间。我们发送编辑框的内容给父窗体,然后接受父窗体的发送的内容,显示到listbox 中。

  这里会看到我使用了委托和事件,其实,刚入门的我,对于c#里的委托和事件 理解的并不深刻。看到很多地方再用。感觉和c++ 的回调很相似。这里就不纠结了,

  后面慢慢理解吧。我们通过委托将子窗体的内容发送到主窗体。

namespace MyControl
{
    public partial class UserControl1: UserControl
    {
        //声明委托 和 事件
        public delegate void TransfDelegate(String value);
        public UserControl1()
        {
            InitializeComponent();
        }
        public event TransfDelegate TransfEvent;
        private void UserControl1_Load(object sender, EventArgs e)
        {

        }
        public void WriteMessage(string str)
        {
            listBoxRecv.Items.Add(str);
        }

        private void buttonSend_Click(object sender, EventArgs e)
        {
            TransfEvent(textBoxSend.Text);
        }
    }
}

  

  第三步,直接编译生成,这样在debug 目录下就会生成一个 MyControl.dll 这样一个文件,让我这样一个从c++ 过来的人,真的是汗颜啊。也太简单了吧。

  第四部,也就是如何使用该自定义控件。在工具箱的最下面,右键选择“选择项”,进入到COM 选项下,浏览刚刚生成的MyControl.dll 也就是将该控件加

  入到我们的工具箱中。这样我们就可以像其他控件一样,拖放该控件到我们主窗体中。

  在主窗体中,我们也拖放一个类似的布局。这里需要注意的一点是我们要实现 子控件的时间,才能达到子控件给主窗体复制的效果。

namespace UserControl
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            userControl11.WriteMessage(textBoxSend.Text);
        }
        //事件处理方法
        void frm_TransfEvent(string value)
        {
            listBoxRecv.Items.Add(value);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            userControl11.TransfEvent += frm_TransfEvent;
        }
    }
}

  

  比如说,我们想要主窗体获取到子窗体的点击事件怎么做,也很简单,类似的,我们可以自定义点击事件,让主窗体实现它既可。

  项目中用到的一个波形控件,已经上传到github https://github.com/liningg/wavecontrol.git,当然这个东西是没有做成通用的,因为那样,就太复杂了。效果感觉还是不错的。

  如下图:

 

  当然这只是其中之一,真正的项目界面应该是这样的额,这个属于产品,就不能上传了。

wpf使用winform自定义控件(代码片段)

...引用WindowsFormsIntegration.dllSystem.Windows.Forms.dll2、在要使用WinForm控件的WPF窗体的XAML文件中添加如下内容:xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration... 查看详情

winform创建自定义控件

虽然VS为我们提供了很多控件可以使用,但有时候这些控件仍然不能满足我们的要求,比如我们要对部分控件进行一些个性化的定制,例如美化控件,这时候就需要自己绘制控件,或是在原有控件的基础上进行修改自定义控件分... 查看详情

c#winform制作自定义控件

在winform中,我想制作一个自定义的控件,自定义的控件里就一个label控件和一个panel控件,想实现的其实就是一个有标题的panel容器。请问怎么为自定义的控件添加属性和事件,如添加一个Txt属性用来设定label的值。还有一个问题... 查看详情

在winform界面使用自定义用户控件及tabelpanel和stackpanel布局控件(代码片段)

...,用户控件同时也可以封装处理一些简单的逻辑。在开发Winform各种类型项目,我都时不时需要定制一些特殊的用户控件,以方便在界面模块中反复使用。我们一般是在自定义的用户控件里面,添加各种各样的界面控件元素,或... 查看详情

如何让 WinForm 设计器完全忽略自定义控件上的属性?

】如何让WinForm设计器完全忽略自定义控件上的属性?【英文标题】:HowdoIgettheWinFormDesignertototallyignoreapropertyonacustomcontrol?【发布时间】:2011-02-0514:59:06【问题描述】:这一定是常见问题解答,但我找不到重复的问题!有很多不同... 查看详情

c#用户自定义控件的问题winform

环境vs2008新建了一个用户控件在里面放了个datagridview然后将这个用户控件放到窗体中没有了datasource这个属性翻了下datasource这个属性是来自datagridview用户控件就没有继承到这个属性要怎么弄下?请教参考技术A你使用用户控件肯定... 查看详情

一个winform下datagridview控件外观的自定义类

...、关于起因最近非常频繁的使用DataGridView控件,VS提供的Winform下DataGridView的默认样式非常难看。如果做美化处理的话,需要调整的地方非常多,且该控件的很多设置属性非常的晦涩,不是很人性化。每次进行设置都煞费脑筋,并... 查看详情

winform自定义控件中其他遮挡控件点击事件(代码片段)

自定义控件在其他窗口调用时,里面的lable阻挡了控件的点击事件解决方法自定义控件中lable的 点击事件privatevoidLable1_Click(objectsender,EventArgse)base.OnClick(e);//触发控件点击事件  查看详情

自定义 Winforms 设计器控件同时缩放和平移控件

】自定义Winforms设计器控件同时缩放和平移控件【英文标题】:ZoomandPancontrolssimultaneouslyforacustomWinformsdesignercontrol【发布时间】:2021-10-1514:59:00【问题描述】:我正在尝试在winforms中创建一个“设计师”。这将向用户呈现一个所见... 查看详情

winform用户控件timer控件三级联动

用户控件:相当于自定义的一个panel里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件。使用方法:在项目上右键、添加、用户控件,之后用户控件的编辑与普通容器控件类似。如果要在后台往窗体中添加,将... 查看详情

winform控件tag使用规范

背景Tag在WinForm控件中经常被用来存储临时数据,类型为object,但是当程序中多个地方使用到Tag时,容易造成Tag使用的混乱,Tag是如此重要的一个属性,应该要好好考虑下如何有效的使用Tag服务于程序开发。借鉴Web开发时,Js可以... 查看详情

winform自定义自动完成控件(代码片段)

...,很多优秀的前端框架都会带有自动完成控件,同样的,winform也有,在我们的TextBox和ComboBox中,只需要设置AutoCompleteSource属性为CustomSource,然后将值加入到AutoCompleteCustomSource中就可以了  比如:  string[]dataSource=newstring[]"appl... 查看详情

需要 C# Winforms 自定义 WebBrowser 控件

】需要C#Winforms自定义WebBrowser控件【英文标题】:C#WinformsCustomWebBrowserControlNeeded【发布时间】:2011-04-2816:10:09【问题描述】:我最近一直在网上搜索一个现有的控件,该控件的作用类似于网络浏览器控件,具有一些我需要的特定... 查看详情

winform自定义控件基础

1.设置图像和文字以抗锯齿的方式呈现1g.SmoothingMode=SmoothingMode.AntiAlias;2g.TextRenderingHint=TextRenderingHint.AntiAlias; 2.指定区域绘图(常见于OnPaint函数中:g.DrawImage(...))1//参数:2//image:3//要绘制的System.Drawing.Image。4// 查看详情

winform自定义控件:imagebutton(转)

原文地址:https://www.codeproject.com/Articles/29010/WinForm-ImageButton 自定义winfrom图片按钮:支持鼠标正常、悬停、按下更改图片,支持文本。首先,创建没有按钮文本的图片,这样的:正常:    悬停:   &nb... 查看详情

winform日历控件

 分享一个漂亮的winform自定义控件,做考勤、日程管理、计划最好的自定义控件了,能够添加备注等等。 查看详情

首次放置在表单上时如何获取要遵守的 WinForms 自定义控件的默认值

】首次放置在表单上时如何获取要遵守的WinForms自定义控件的默认值【英文标题】:HowtogetWinFormscustomcontrol\'sdefaultvaluetoberespectedwhenfirstdroppedonaform【发布时间】:2018-06-2900:33:04【问题描述】:我有一个包含自定义控件的类库:using... 查看详情

winform用户窗体

用户控件:相当于自定义的一个panel里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件。使用方法:在项目上右键、添加、用户控件,之后用户控件的编辑与普通容器控件类似。如果要在后台往窗体中添加, ... 查看详情