用户控件

VS2017 Winform 设计器异常原因排查

不羁岁月 提交于 2019-11-28 19:40:34
Winform 软件开发过程中,使用可视化设计器 大大提高了应用程序布局效率 ,今天遇到设计器报错,记录一下排错过程。 前些天编写了一个用户控件,从工具箱中拖出控件时报错,截图如下(1-1), 但程序运行,并没有异常。后来发现,是vs 2017 设计器呈现控件外观时,默认执行了自定义控件的 类构造或 Load 方法 过程中抛出错误 。 为什么程序实际运行没异常呢? 于是,在抛出异常点加了 try catch ,检查控件调用方 , 如下截图(1-2) , 这时设计器异常显示如(1-3) 。 原来是从IDE 启动目录加载了控件,初使化环境并非 应用程序目录。因为用户控件依赖应用程序启动目录配置信息和一些其它DLL , 而IDE环境不存在这些配置依赖项。 解决方式: 1. 在用户控件初使化如 构造或 Load 中加上 Try Catch . 2. 减少用户控件初使化过程中对外部依赖项,如可将一些外部依赖项通过传参方式注入。 3. 与显示界面无关逻辑 移出 构造或 Load 方法。后期通过外部调用初使化。 图1-1 图1-2 图1-3 来源: https://www.cnblogs.com/howtrace/p/11423593.html

增加用户控件或自定义控件

感情迁移 提交于 2019-11-27 02:54:56
1. 确保页面上用 Register 指令注册此用户控件或自定义控件 <@ Register tagPrefix=”my” tagName=”mycontrol01” src=”~/UserControls/mycontrol.ascx” > 2. 或者确保 web.config 中注册了此用户控件或自定义控件 <pages> <controls> <add tagPrefix="my" namespace="My.MyControls" assembly="My.MyControls" > <add tagPrefix=”my” tagName=”mycontrol01” src=”~/UserControls/mycontrol01.ascx” > </controls> </pages> 3. 确保 Register 指令与控件声明的拼写完全正确,下例是 1 和 L 的误写导致的错误 <@ Register tagPrefix=”my” tagName=”mycontrol01” src=”~/UserControls/mycontrol.ascx” > <my:mycontrol0lrunat=”server” /> 转载于:https://www.cnblogs.com/love-summer/archive/2011/10/31/2230433.html 来源:

winfrom窗体中嵌套WPF控件

我只是一个虾纸丫 提交于 2019-11-26 23:15:55
前言 本文主要介绍如何在winfrom窗体中嵌套WPF控件, 一来是自己记录一下,而来希望能对有需要的朋友提供实现思路. 如有错误请指出...下面进入正题... -1、前期准备   准备一个建立好的winfrom窗体, 以及一个wpf的窗口. 注意: 要想在winfrom中成功调用. 你的wpf必须为用户控件类型. 也就是:UserControl 2、具体步骤   在你的winfrom窗体设计中,打开工具箱,找到一个叫做“ElementHost”的控件,并拖入窗体, 类似于一个Panel容器. 如下图所示: 我这里设置的ElementHost控件布满整个winfrom窗体, 虚线边框就是ElementHost的虚线,布置好的winfrom窗体如下图所示: 紧接着,为了演示效果,我就随意在wpf的用户控件中拖入了一个button按钮和一个lable标签,如下图所示: 现在就差最后一步,就是怎么把这个wpf用户控件嵌套到winfrom窗体中去呢? 其实就三句代码, 如下图所示: private void Form1_Load(object sender, EventArgs e) { UserControl1 wpf = new UserControl1();//实例化wpf用户控件 elementHost1.Child=wpf;//设置ElementHost所承载的WPF this