c# wpf与winform的区别(运行效率和界面对比哪个好)

WPF的缩写指微软的Windows Presentation Foundation,而WinForms是Windows Forms Applications的简单组合。这两个都是微软的Windows应用程序图形用户界面,开发人员可以使用它们来开发Windows桌面应用程序。本文重点介绍两种开发Windows桌面应用程序的方法之间的主要区别,这些方法可以在现代系统开发中发挥更好的作用。

Windows Forms

WinForms于2002年2月作为.Net Framework的一部分引入。在很大程度上,WinForms允许开发人员在Windows窗体上拖放控件,并允许开发人员使用可以具有C#,VB.NET或任何其他.NET语言的代码隐藏文件来操纵这些控件。每个WinForms控件都是一个类的实例,因为WinForms作为具有一组C++类的包装器存在。Microsoft的Visual Studio使WinForms的开发更容易,因为开发人员可以轻松地从工具箱中拖放控件。

面试官问:你知道WPF与WinForms的区别吗?

WinForms工具箱中的控件

在WinForms桌面应用程序中,开发人员只能访问他们可以在其中操纵控件事件的代码隐藏文件。WinForms桌面应用程序在控件的功能和应用程序行为方面有其局限性,这将在下一部分中揭示。

WPF桌面应用程序

与WinForms不同,WPF的体系结构包含三个主要组件:a presentation framework, presentation core, and mallcore。WPF并不完全依赖于标准Windows控件,因此是一种独立方式。2007年,Microsoft引入了Windows Presentation Foundation(WPF),以交替WinForms来进行.Net Framework桌面应用程序开发。这一交替带来了桌面应用程序开发中的许多变化。首先,WPF将设计人员和程序员分开,可以使用Visual Studio或Blend分别设计UI,而开发人员可以使用代码隐藏文件来操纵控件事件。

WPF使用XAML创建控件,其文件结构更像ASP.NET,您可以自由使用设计器或编写XAML代码来创建控件。使用Canvas Panel的设计师仍然可以像在WinForms中一样在Windows页面上拖放控件。WPF带来的主要区别是XAML文件和对XAML文件附带的可见设计器的访问。

面试官问:你知道WPF与WinForms的区别吗?

WPF可视化设计和XAML文件编辑

上图显示了WPF应用程序的布局,其中在Designer旁边显示了XAML文件。

WPF项目的文件结构如下:

面试官问:你知道WPF与WinForms的区别吗?

WPF项目的文件结构

  • 每个窗口或页面都有一个用于添加控件的.xaml文件以及一个.cs,.vb等文件,后者是代码隐藏文件,更像是ASP.NET方式。
  • 与WinForms不同,WPF生成一个初始MainWindow来启动应用程序,并且要更改启动窗口,可以在App.xaml文件中执行此操作。
面试官问:你知道WPF与WinForms的区别吗?

WPF主窗体启动配置

  • 该文件充当应用程序的条目。

WPF与WinForms的其他显著区别是控件。要添加控件,您只需要编写简单的XAML代码。例如,要在WPF窗口中添加文本框,你可以写如下代码实现:

<Window x:Class="WpfApp1.MainWindow"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    xmlns:local="clr-namespace:WpfApp1"  
   mc:Ignorable="d"  
   Title="MainWindow" Height="450" Width="800">  
    <StackPanel>  
        <TextBox></TextBox>  
    </StackPanel>  
</Window>

请注意语法中的标记,该标记建议使用名称“扩展应用程序标记语言(XAML)”。XAML代码放置在Window标记中。控件标签可能具有描述控件宽度,高度等的属性,具体取决于控件。

WPF还带来了与WinForms的另一个显著区别,那就是可以添加带有图像的Button的功能。在WinForms中,向按钮添加图像意味着必须自己绘制图像或包含一些第三方控件,但是WPF按钮控件很简单,您可以向其中添加任何内容。

<Window x:Class="WpfApp1.MainWindow"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    xmlns:local="clr-namespace:WpfApp1"  
   mc:Ignorable="d"  
   Title="MainWindow" Height="500" Width="800">  
    <Button Padding="5">  
        <StackPanel Orientation="Horizontal">  
            <Image Source="/Image.jpg" Height="25" Width="50" />  
            <TextBlock Margin="5,0">I'm a Button</TextBlock>  
        </StackPanel>  
    </Button>  
</Window>

输出如下所示:

面试官问:你知道WPF与WinForms的区别吗?

WPF运行演示

WPF还提供了完全受支持的数据绑定功能,如下面的示例所示:

<Window x:Class="WpfApp1.MainWindow"  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"  
    xmlns:local="clr-namespace:WpfApp1"  
   mc:Ignorable="d"  
        Title="MainWindow" Height="500" Width="800">  
    <StackPanel Margin="10">  
        <WrapPanel Margin="0,10">  
            <Label Content="Your Text Here:" FontWeight="Bold"/>  
            <TextBox Name="txtBind" Height="20" Width="250"  RenderTransformOrigin="-2.75,0.587" Margin="59,0,336,0"/>  
        </WrapPanel>  
        <WrapPanel Margin="0,10">  
            <TextBlock Text="Bound-Text: " FontWeight="Bold" />  
            <TextBlock Text="{Binding Path=Text, ElementName=txtBind}" />  
        </WrapPanel>  
    </StackPanel>  
</Window>

输出

面试官问:你知道WPF与WinForms的区别吗?

WPF数据绑定演示

上例中的{Binding}属性用于将<TextBlock>中的文本绑定到txtBindTextBox中的文本。这只是说明使用{Binding}属性在WPF中绑定数据有多么简单。

结论

本文通过两种创建桌面应用程序的.NET方式之间的体系结构,语法,文件结构以及应用程序行为差异,展示了WinForms和WPF之间的主要差异。尽管WinForms设计看似友好和直接,但是XAML带来了开发人员在现代桌面应用程序中可能需要的一些有用功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至605152901@qq.com 举报,一经查实,本站将立刻删除。

赞 (0)
松果网松果网
倒车入库技巧图解 6个步骤要掌握(老司机教你一把过)
上一篇 2022年5月4日 下午6:10
wpf和winform界面对比(看看C# winform的图形界面库Sunnyui效果)
下一篇 2022年5月4日 下午6:30

相关推荐

  • 魅族 19 主理人计划曝光(用户体验感爆棚的设计)

    转眼间,从「魅族 19 主理人计划」在魅族社区发布第一个帖子以来,已经过去了两个多月的时间,在这段时间里,「魅族 19 主理人计划」也是一直很用心地在收集大家对魅族 19 的意见,共发布了五轮的产品讨论,以及三期用户创作作品集,让大家可以对魅族 19 畅所欲言。 (用户创作作品集) 在最新的一期用户创作作品集分享中,和往期一样我们依然能够看到有意思、有创意的…

    2022年8月26日
    0
  • 任正非创业的艰辛故事简介(42岁国企辞职,43岁创业)

    站在巨人的肩膀上才能看得更远。正如这句话一样,我们每个人的起点,并不能决定我们的终点,通过不停地学习和努力,每个人都有可能改变我们自己的命运。而对于我们普通人来说,学习那些成功人士是如何掌握财富密码也是一种不断学习完善自我的过程。 安顺市是隶属于贵州省的地级市,位于贵州省的中西部。安顺是中国优秀的旅游城市,有着“中国瀑乡”、“蜡染之乡”、“西部之秀”等美称,…

    2022年7月22日
    0
  • 学骑自行车的方法和技巧(初学者学习技巧图文教程)

    正确骑行的各个关节角度 备注:注意此时自行车应该垂直地面。 上周我们给大家介绍了冬季骑行的相关知识,本期就给大家带来骑行技术中的骑行姿势和自行车调整的内容。平衡和放松的身体姿势是骑行的最基本技能,正确的骑行姿势不仅能获得较好的健身效果,还是预防损伤的最关键一步。时刻提醒自己的身体姿势不仅能缓解疲劳,还能带来更多的骑行愉悦感。 1骑行姿势 一般来说,针对公路自…

    2022年4月26日
    0
  • simple鼠标dpi以及csgo设置(游戏鼠标灵敏度调试方法)

    说到游戏,尤其是现在的电竞游戏,选择一个好的游戏鼠标固然重要,但更重要的是选择合适的鼠标灵敏度,这也是为什么各CS GO、PUBG网站上会有一个专区披露大神和职业哥的鼠标参数设置的原因。但合适的才是最好的,你会自己设置了吗? 不要使用鼠标加速鼠标加速是指你在游戏中的光标会根据你在桌面上移动鼠标的速度而进一步移动。这通常被认为是游戏鼠标的大忌(游戏鼠标在处理运…

    2022年12月7日
    0
  • tiktok跨境电商如何入驻?(上跨境指南)

    接下来我们就来给大家讲解一下这方面的内容。 目前TikTok东南亚跨境小店的入驻采用的是定向邀请制,就是商家需要邀请码才能完成入驻。 而获得邀请码的方式分为两种,一种是针对已经开通英国跨境店铺的卖家,另一种是针对没有或不想开通英国小店的卖家。 1、已经开通英国跨境店铺的卖家 有官方客户经理AM的卖家,直接联系咨询AM。如果没有AM,已用国内营业执照开通英国小…

    2023年4月6日
    0