Visual Studio名字的由来——VisualStudio可视化探秘

A-2 Open-cascade/使用Visual Studio与QT实现OCC可视化 opencascade 阅读详情
在VisualStudio.Net之前,大多数用户界面的设计都需要用代码实现。虽然那个时候也有VC和VB,但VC/VB设计器的功能还非常弱;虽然Java有LayoutEngine,但是多数情况下只能用来设计一个规整的界面;虽然还有很多IDE也有可视化设计器,但是它们的表现还达不到我们的期望。在这种情况下,如果我们要实现一个复杂的界面,将会是一件痛苦的事情,而且一旦实现了就不能轻易改动,否则就不得不重复调整某个控件数个像素后再运行工程看效果无数次。  
  而VisualStudio.Net的出现让我们眼前一亮,我们只需要在Form设计器或者其它设计器上拖拖拽拽就能完成大部分界面的设计了,而且几乎一切都是所见即所得的,何其爽哉!
  也许你也会和曾经的我一般的好奇,这么强大的设计器是怎么实现的?为什么在设计器上拖拖拽拽就能生成正确的代码?Form设计器到底是怎么回事,那上面真的就放了一个Form实例吗?我从ToolBox上拖拽了一个Control到Form上以后,就真的在Form上创建了一个Control吗?Control在设计时的各种行为又是怎么实现的?我需要如何控制我自己的Control在设计时的行为?
  如果你还对此保持了一份好奇心,那么就请随本文一起去探究一下可视化设计的奥秘。本文是一篇介绍性的文章,面向的是初学者或者对DesignTime不甚了解的朋友,所以不会出现一些深层次的知识,也不会太扩散开了去说,仅能点到而已。如果您对本文中提到到某方面或者某个技术点有兴趣,那请参考MSDN或者参考他人的博客,或者关注一下我以后的一些这方面的文章。
  首先,我可以肯定的告诉你,你所在设计器上看到的所有Component,Control,包括Form本身,IDE都在内存中创建了实际的对象。你在设计器中看到的Form,就是有一个Form实例放在那,而Form上的某个Control,也有一个实际的Control被添加到了这个Form中,就像你运行这个工程以后看到的Form界面一样。所不同的是你运行起来的哪个Form是生成了程序集以后从程序集中创建的;而设计器中的Form则是IDE先把你的代码转换成了CodeDom,然后再从CodeDom反序列化成实例的。
  
  所以,你在在Form上拖动Control,或者通过属性窗口设置某个Control的属性,实际上都在修改内存中的对象。那么,你对对象的修改又是如何生成代码的呢?答案也在CodeDom,IDE会把你设计器中的所有Component都序列化成CodeDom,然后再从CodeDom生成代码。(关于Codedom ,这里为什么要用CodeDom,以及一些其它细节,将在以后的文章中描述)。
  在Form设计器上最重要的操作只有两种:一是在Form上用鼠标点击,拖拽等;二是通过属性窗口设置Component的属性。
大家可以看到,鼠标键盘在设计器中Form上的操作和在运行时Form的操作截然不同,而且选中一个Control以后这个Control周围会画一圈虚线以及一些热点。那么这又是如何实现的呢?实际上,IDE在设计器中大家所看到的Form上又蒙了两层透明的窗口。一层窗口用来截获消息,你所有对Form上的操作的消息都会被这层串口截获处理,所以你无法点击Form右上角的关闭按钮关闭Form,也无法按下Form上的一个Button;另一层窗口用来绘制装饰,比如选中Control以后周围出现的一圈虚线以及热点等。
  
  而你如果注意看属性窗口上显示的Component上的属性的时候,就会发现那上面的属性和Component上的属性并不太一样,有些属性看不到了,有些属性不起作用了(比如Visible属性),而且又多了一些属性。影响PropertyWindow中属性的方式有很多;一是某些Attribute,比如BrowsableAttribute(在某个属性的脑袋瓜上加一个[Browsable(false)]就能让它在属性窗口中消失);二是某些服务,比如IExtenderProviderService(Component的Name属性就是通过这玩意加上去的);三是通过ComponentDesigner上的PreFilteProperties(Control的Visible属性就是在这里面被狸猫换太子了)和PostFilterProperties;四是通过设置TypeDescriptor,这是最根本的方式,实际上前3种方式最终也是通过TypeDescriptor实现的,关于TypeDescriptor我会在以后专门写文章说明。
  这里再提一下DesignerAttribute,Component在设计器中的行为多半都是通过Designer实现的,你可以给自己的Component加一个Designer,你自己的Designer应当从ComponentDesigner或者它的派生类(比如ControlDesigner)中继承。在你的Designer中你就可以通过重写ActionLists属性来自定义智能标签(SmartTag);可以重写Verbs属性来在右键菜单中添加一个菜单项;如果从ControlDesigner派生更可以SnapLines来自定义拖动时的吸附效果等等。假设你的Designer叫MyDesigner,你的Component叫MyComponent,那么把MyDesigner挂到MyComponent上的方法是在MyComponent类上加一个Attribute:[Designer(typeof(MyDesigner)] 。
  好了,对于VisualStudio设计器的介绍先到这里,如果你对这部分内容感兴趣的话,请继续关注本博客,如果你有什么问题或者想法,欢饮讨论。
C++入门首选:Visual Studio 2026安装配置与核心功能详解 集成开发环境(IDE)是现代软件开发的核心工具,它将代码编辑、编译、调试和项目管理等功能整合于一体,极大提升了开发效率。其工作原理是通过统一的图形界面,将底层的编译器、链接器和调试器等工具链封装起来,为开发者提供无缝的开发体验。对于C++这类系统级语言而言,一个优秀的IDE能有效降低环境配置的复杂度,让初学者快速上手。Visual Studio作为微软推出的重量级IDE,凭借其开箱即用的特性和强大的调试器,在Windows平台的C++开发中占据重要地位。它尤其适合新手入门,能帮助开发者避开环境配置的常见陷阱 阅读详情

相关推荐

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例

[机器学习-回归实例] 李宏毅机器学习作业一:PM2.5 预测实例 简介   这是一个回归预测的实例,数据集来自李宏毅的《机器学习》课程的第一次作业,可以用来训练一个线性回归模型或者其他的回归模型,动手实践学习到的理论知识,在实践中去发现问题。这篇文章主要包括数据集的解释、数据的预处理过程及线性回归模型的代码实现这三个部分。由于这个数据集并不能直接使用,还需进行一些重构,为了对初学者更友好一些,我会提供重构完的可以读取后就直接使用的数据集,我也会提供 Matlab\rm MatlabMatlab 可直接使用

qq_27309515的博客 3574

Visual Studio和Visual Studio Code分清了? 都是IDE,可不是框架。

Visual Studio(简称VS)是由微软公司开发的一款集成开发环境(IDE),用于开发各种类型的软件,包括桌面应用程序、Web 应用程序、移动应用程序、云服务等。Visual Studio 提供了丰富的工具和功能,包括代码编辑器、调试器、图形化设计工具、自动化构建工具等,以帮助开发者更高效地进行软件开发。Visual Studio 支持多种编程语言,包括C#、C++、Visual Basic、JavaScript、Python等,同时也提供了丰富的扩展和插件生态系统,可以满足不同开发者的需求。

贝格前端工场的博客 6万+

在Jetson orin NX上安装部署Yolov8

1、环境准备与依赖安装2、安装PyTorch和Torchvision:从NVIDIA官方论坛或开发者下载中心获取与你的JetPack版本兼容的PyTorch wheel文件。例如,对于JetPack 5.1.2,可以安装PyTorch v2.1.0 8。:需要编译安装与PyTorch版本匹配的Torchvision。这里自己编译没有成功,下载了一个现成的可以用torchvision-0.16.2+c6f3977-cp38-cp38-linux_aarch64.whl。

xxxcccvvvbbb的博客 776

Visual Studio 必备可视化插件推荐

1、Visual Studio Visualizer,项目地址 https://vsdatawatchers.codeplex.com/,这个项目包括以下内容的可视化插件: Data visualizer:DataSet、DataTable、DataRow、DataView 、DataRowView、DataRowCollection Code visualizer:Entity Framew...

weixin_33725126的博客 2257

AIStarter避坑指南:Wan2.2 Animate整合包从下载到出片的完整流程(附常见错误修复)

本文提供了Wan2.2 Animate整合包从下载部署到生成高清视频的完整避坑指南。详细解析了通过AIStarter启动、环境配置、核心参数调优以及七大常见错误(如CUDA内存不足、节点缺失、视频模糊等)的根因与修复方案,帮助用户高效利用ComfyUI工作流,稳定生成720P高质量AI动画视频。

weixin_29052717的博客 704

基于LSTM语义分析的企业风险预测系统

在数字化时代,企业面临着前所未有的挑战和机遇,而风险管理作为确保企业稳定发展的关键一环,其重要性日益凸显。为了及时、准确地监测和分析企业相关的风险,并预测可能带来的风险,本文介绍了一种基于长短期记忆(LSTM)语义分析的企业风险预测系统。该系统利用深度学习技术,通过将收集到的企业数据进行预处理和分析,结合LSTM模型对文本进行深度语义分析,从而实现对潜在风险的预测和评估。系统设计方面,该系统包括数据预处理、LSTM模型构建与训练、风险预测以及可视化展示等模块。

qiufangtaowvnyyidtf的博客 1392

代码 阅读器:SI (Source Insight)、vscode(Visual Studio Code)、code-server、Visual Studio、OpenGrok

代码 阅读器:IDE、SI (Source Insight)、OpenGrok

freeking101的博客 7549

湿敏电阻HR202的两种驱动方案实测:IO充放电法 vs. 交流方波ADC法,哪个更适合你?

本文深入评测湿敏电阻HR202的两种驱动方案:IO充放电法和交流方波ADC法。通过原理图分析、精度实测和资源占用对比,揭示交流方波ADC法在精度和稳定性上的优势,特别适合长期监测场景。同时提供IO充放电法在资源受限情况下的应用建议,帮助工程师根据项目需求做出最优选择。

weixin_30421809的博客 466

使用Visual Studio开发简单的信息化系统

使用Visual Studio连接到SQL server服务并开发简单的信息化系统

weixin_65387849的博客 2791

WslRegisterDistribution failed with error_ 0x8007019e、0x800701bc、0x80370102

Ubuntu 20.04.4 LTS 报错解决方案。分别涉及到三个错误:WslRegisterDistribution failed with error: 0x8007019e、WslRegisterDistribution failed with error: 0x800701bc和WslRegisterDistribution failed with error: 0x80370102

一起加油~ 5万+

5个企业级SOC平台横向对比:IBM QRadar vs Splunk vs 奇安信NGSOC

本文深度对比了IBM QRadar、Splunk和奇安信NGSOC等五大企业级SOC平台的核心能力,从架构设计、威胁检测、运营效率、成本模型和行业适配度五个维度进行解析。文章特别强调安全运营中心(SOC)在现代企业中的关键作用,并提供了实战数据和优化建议,帮助企业选择最适合自身需求的SOC解决方案。

a1b2c的博客 663

Visual Studio与VS Code深度对比:从核心定位到实战场景的开发者选择指南

集成开发环境(IDE)与代码编辑器是现代软件开发的核心工具,它们通过提供代码编写、调试、构建和项目管理等功能,极大地提升了开发效率。从原理上看,IDE通常集成了编译器、调试器和项目管理工具,旨在为特定技术栈提供开箱即用的完整解决方案;而轻量级编辑器则更侧重于代码编辑本身,通过强大的插件生态来扩展功能,实现高度的定制化。其技术价值在于,前者能显著降低大型、复杂项目的配置与管理门槛,后者则为快速迭代、多语言混合开发及跨平台工作流提供了灵活性。在应用场景上,IDE更适合Windows平台下的C++、C#大型桌面应

423

YOLOv11改进策略【损失函数篇】| WIoU v3:针对低质量样本的边界框回归损失函数

是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。论文链接:https://arxiv.org/pdf/2301.10051 源码链接:https://github.com/Instinct323/wiou此处需要查看的文件是中定义了模型的损失函数和计算方法,我们想要加入新的损失函数就只需要将代码放到这个文件内即可将下方的函数替换原本的函数即可: 用于计算各种损失。在内修改如下代码,使模型调用此损失函数。 tal.py中是一些损失函数的功能应用。在内修改如下代码,

Limiiiing的博客 3797

Visual Studio 2022 安装与配置全攻略:从系统要求到性能优化

集成开发环境(IDE)是现代软件开发的基石,它通过整合代码编辑、编译、调试和项目管理等功能,极大提升了开发效率。其核心原理在于提供一个统一的图形化界面,将底层工具链封装起来,让开发者能专注于业务逻辑。在众多IDE中,Visual Studio以其对微软技术栈的深度集成和强大的企业级功能而著称,尤其适合.NET、C++和跨平台开发。对于开发者而言,一个正确安装和优化配置的Visual Studio环境是保障项目顺利进行、提升代码质量的关键基础设施。本文聚焦于Visual Studio 2022这一最新长期支持

weixin_30764771的博客 444

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

DebugLZQ:Visual Studio .NET调试增强工具实战指南

调试是.NET开发中高频且关键的工程活动,其本质是快速理解运行时对象状态与执行上下文。基于Visual Studio原生调试器表达式求值引擎,DebugLZQ通过轻量级注入式扩展,实现语法简化、结构可视化与上下文感知三重能力升级——无需修改UI或重构代码,即可在Watch/Immediate窗口直接使用?、$exception、#json等指令完成异常链分析、空安全访问、格式化JSON输出与毫秒级性能测量。它不替代官方调试功能,而是精准填补断点内‘看不清、找不到、算不准’的实践缝隙,特别适用于ASP.NET

ciyinzhi8788的博客 428

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

初探Visual Studio 2008 Shell

2007 TechEd会议宣布了关于Visual Studio的重大消息。第一,介绍了Visual Studio下一代版本的官方名字。以前一直称为Orcas,下一个版本正式取名为Visual Studio 2008。第二个消息引起了很大的轰动,那就是新产品Visual Studio 2008 Shell问世。 什么是shell? Visual Studio 2008 Shell这一名字准确地描

phphot 3562

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Visual Studio 2022 vs. Visual Studio Code:我该选哪个?

总而言之,Visual Studio 2022 和 Visual Studio Code 并非简单的“谁强谁弱”的关系,而是“专业工坊”与“万能工具箱”的区别。是为深度和复杂度而生的专业 IDE,它在特定领域(尤其是 .NET 生态)提供了无可替代的强大功能。则是为现代、敏捷和多样化的开发需求而生的代码编辑器,凭借其无与伦比的灵活性和跨平台能力,赢得了广大开发者的青睐。许多资深开发者甚至会同时安装这两款工具,根据手头项目的不同随时切换。希望这篇对比能帮助你找到最适合自己的那一款利器!

LoatheMC的博客 767

【译】我们最喜欢的2024年的 Visual Studio 新功能

去年,Visual Studio 团队发布了许多新的面向开发人员的改进和 AI 集成,其中许多直接来自您在开发者社区的反馈。在这篇文章中,我们将重点介绍2024年团队最喜欢的功能,这些功能可以提高生产力,简化工作流程,并增强您的编码体验。让我们开始吧!图像悬停预览:立即看到您的图像! 如何在代码中可视化引用的图像?Visual Studio 的图像悬停预览解决了这个问题,当您将鼠标悬...

dotNET跨平台 405

Visual Studio

Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 8.0 版本,也就是 Visual Studio 2005。 Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。 1998 年,微软公司发布了 Visua

chainkong的专栏 723

What’s Visual Studio?

Visual Studio简介 Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。 Visual Studio 可以用来创建 Windows 平台下的 Windows 应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和 Office 插件。 1998 年,微软公司发布了 Visual Studio 6.0。所有开发语言...

weixin_34235371的博客 106
ikernel32
博客等级 码龄15年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值