WPF与WinForm的抉择】的更多相关文章

微软曾经对WPF(代号Avalon)抱很大的期望——新一代的华丽用户界面平台,一统Web应用和桌面应用,Flash杀手,尽管微软口头上不承认.几年下来,WPF确实实现了当初的预期的大部分功能,但离称霸软件开发领域还有不小的距离.不过,刚转到WinForm上一两年的开发人员们都很困惑,WinForm究竟还有没有未来.微软只是模糊地说短期内还是WinForm,长期是WPF.想想“维纳斯”,“TabletPC”,“Hailstorm”,“IE Channels”等等就知道这位老大的话不能全信.到底何去…
转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比WinForm先进是不容置疑的.我觉得WPF相比于WinForm有下面的一些较好的特性: 解决Window Handle问题   在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等.而每个控件或Grid cell都是一个小窗口,会使用一个Window…
最近公司计划对ERP系统全面升级,现有的ERP是简单的bs架构系统打算改版成cs.平时如自己写一些工具,小应用都是用winform就足够.但是界面总是很难看,据了解WPF在这一方面会强一些.因为之前对WPF并不熟悉,先花了点时间了解一下,和Winform做了一下对比.以下大概的整理,未做详细整理. wpf是啥技术? DHTML就是WPF的直系亲属.WPF里的大量核心概念和结构,如属性引擎.事件模型等,都是继承自 DHTML,最大的一个不同是外观和控件逻辑的分离.WPF应用和DHTML应用(HTA…
今天有时间了,继续<编写高质量代码改善程序的157个建议>的阅读,当我阅读到建议87的时候,里面的一些代码示例和文中所说的不一致了,是不是我现在用的是NetFramework 4.0的缘故,已经把一些问题修复了,今天把问题写下来,告诉大家文中有些小问题需要修复一下. WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(Button,Label,Textbox控件等)必须由创建它的那个线程来更新.WinForm这方面的限制并不是很严格,所以像下面这样的代码,在Winform中的大部分…
有人会说不建议Wpf中使用Winform控件,有人会说建议使用Winform控件在Wpf下的替代方案,然而在实际工作中由于项目的特殊需求,考虑到时间.成本等因素,往往难免会碰到在WPF中使用Winfrom控件的问题,我们知道Wpf可以通过使用WindowsFormsHost容器调用Winform控件,但是在一些场合需要将Wpf元素显示在Winform控件的上层,此时就会出现Wpf元素被Winform控件遮盖的问题. 一.场景再现 接到公司命令,在时间紧迫的情况下,需要将原来的Winform程序(…
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面的限制并不是很严格,所以像下面这样的代码,在WinForm中大部分情况下还能运行(本建议后面会详细解释为什么会出现这种现象): private void buttonStartAsync_Click(object sender, EventArgs e) { Task t = new Task(()…
原文:WPF和Winform中picturebox图片局部放大 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/yangyisen0713/article/details/19152607 (代码不多,就只放代码了) 一.WPF中图片局部放大 1.xaml中代码: <Window x:Class="WpfZoom.MainWindow" xmlns="http://schemas.microsoft.com/winfx/…
深入浅出WPF(7)——数据的绿色通道,Binding(上) 水之真谛关注6人评论28117人阅读2008-06-23 02:40:00  http://liuteimeng.blog.51cto.com/120361/ 深入浅出WPF(7)——数据的绿色通道,Binding(上) 小序: 怎么直接从2蹦到7啦?!啊哦,实在是不好意思,最近实在是太忙了,忙的原因也非常简单——自己的技术太差了,还有很多东西要学呀.门里门外,发现专业程序员非常重要的一项技能是读别人写的代码,这项技能甚至比自己写代码…
WPF可以使用WindowsFormsHost控件做为容器去显示WinForm控件,类似的用法网上到处都是,就是拖一个WindowsFormsHost控件winHost1到WPF页面上,让后设置winHost1.Child属性为你要显示的WinForm控件. 使用WindowsFormsHost显示WinForm控件时会有一个显示风格问题: 设计时的模样如图-1       图-1 显示效果如图-2 图-2 在Main()函数里面添加System.Windows.Forms.Applicatio…
收到了一封学生的邮件: =========================== 金老师您好: 最近在学C#.NET,基本语法学习的差不多了,接下来准备学习图形界面设计部分.但是我目前对于.NET的WinForm.wpf.silverlight这三者的关系弄的不是很清楚,一般书中很少介绍wpf和silverlight,网上搜了一下关于WinForm和wpf的区别,有的说WinForm是wpf的子集,有的说WinForm和wpf是共存关系,弄的很乱.想请教一下您这三者之间到底有什么样的关系呢? 您的…
验证方式,   通过继承 IDataErrorInfo接口 和 DataAnnotations 解释标记语言而实现, 为了能在WPF上通用,所了也要继承属性更改通知接口INotifyPropertyChanged 实际INotifyPropertyChanged接口 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; n…
在WPF中使用Winform控件 <Window x:Class="WPFApplication.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:winforms="clr-namespace:WindowsF…
http://www.cnblogs.com/KnightsWarrior/archive/2010/07/09/1774059.htmlhttp://www.cnblogs.com/zenghongliang/archive/2010/07/06/1771831.htmlWPF将Windows表示层发展至用声明式语言进行开发,并且融入大量的动画和特效,使得在Win32中极难做到的富客户端应用能在WPF中信手拈来,同时用矢量图取代位图,引入路由事件(RoutedEvent)对元素树进行多层监听,…
先说下下面的代码和demo是wpf的,如果winform要用,改动不大的. 实现思路: 通过定时刷新鼠标位置 和 窗体坐标 进行计算 来控制窗体的隐藏 显示 代码都有详细的注释 //窗体状态 true为显示 false为隐藏 private bool IsHide = false; //鼠标状态 true为进入窗体 false为离开窗体 private bool IsMouseEnter = false; //计时器 通过win32api实时获取鼠标位置 private Timer timer;…
1. 部分控件的Text属性,变成了 Content属性 如: winform中,Button.Text = "abc"; wpf中,Button.Content = "abcd"; 2. wpf中控件的控件属性,由 boolean类型的Visiable 改成 枚举类型的 Visibility winform中,Button.Visable = true (false); wpf中,Button.Visibility = System.Windows.Visibil…
一提起winform和wpf有啥不同,可能大部分人都会想到wpf拥有漂亮的界面.wpf中也可以使用winform,大部分情况下,都没有任何问题,极少的情况下,可能会出现问题. 我们就来看一下: void FloatWindow_Loaded(object sender, RoutedEventArgs e) { this.Topmost = true; ; ; } 这是摘自wpf应用中的一段代码,这段代码意图很明显,就是在悬浮窗体加载的时候,给它定位.开发和测试的时候,都没有任何问题.我们主要以…
最近开发wpf项目中有一个模块需要显示PDF文件内容.由于WPF本身没有PDF加载控件(似乎有收费的我查到过类似的资料.如果有新的pdf控件也请通知我一下谢谢). 项目使用之前也是从网上获取的资料,因此接下来的控件命名和项目命名完全沿用原文档.具体地址忘记了.这样也好感谢原作者. 不过里面的逻辑根据项目实际应用做了变工 .每人理解不同为了大家更快更好地的使用.因此我也对自己理解整理出文档供大家参考一下.不足之处还请多指教 因此打算使用WinFrom中所提供的pdf阅读库 首先要准备好AxInte…
Winform中针对界面的元素进行操作, 所有业务都关联在当前窗口的后台, 而在此之前, 无奈你是双击事件的添加方式.还是后台绑定事件的方式, 你都需要给每个元素一个固定规范的名称, 然后进行相关的数据操作.这种方式称之为事件驱动型. WPF的不同之处: 1.  WPF不仅仅在支持原生的Winform旧模式的操作下,升级了一种全新的模式,也是就是MVVM模式, 不再为每个元素添加固定的名称, 然后通过后台进行事件进行业务代码编写. 2.  一套扩展能力超强的UI界面, 与早期的GDI+/GDI不…
写插件弹窗是肯定要有的,有弹窗才有展示功能的页面啊! 记录一下前段时间遇到的一些弹窗方面的坑,一个个踩过来也是收获颇丰啊! WPF弹窗 最简单的弹窗方式,new一个窗体,然后调用Show方法. Window window = new Window(); window.Show(); 然后根据需求的不一样,就有一些东西要调整了,简单一些的比如是否在任务栏显示,是否允许最大最小化,是否运行拖拽等等 window.ShowInTaskbar = false; window.ResizeMode = R…
前言:在WPF开发当中由于DataGrid控件实现业务未达到非常理想的效果,我决定使用WinForm中的DataGridView来实现业务. 在XAML中加入以下命名空间: xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFo…
 1.需要添加一些引用 2.调用处使用如下方法进行调用 Window win= new Window(); ElementHost.EnableModelessKeyboardInterop(win); WindowInteropHelper winHelper = new WindowInteropHelper(win); winHelper.Owner = this.Handle; win.Show(); 没有ElementHost.EnableModelessKeyboardInterop…
DevExpressTelerikMahApps.MetroModern UI for WPFModernWPFExtended WPF Toolkit™ Community EditionModern UI (Metro) Charts for Windows 8, WPF, SilverlightWPF ToolkitFluent.RibboniOpenWorksCSkin其他WPF ExtensionsWPF Themes DevExpress 功能齐全,界面美观:囊括了桌面.APP.WE…
There is a function for that in System.Windows.Input.KeyInterop static class. Try:var inputKey = KeyInterop.KeyFromVirtualKey((int)formsKey);It works because System.Windows.Forms.Keys enumeration members and Win32 virtual key codes has the same numer…
此文章可以解决2至少2个问题: 1.开启AllowsTransparenc造成的GDI+组件不显示问题 2.WPF 组件无法覆盖嵌入WPF窗口的任何第三方GDI+组件上层 方案1:自制双层 原理:用一个新的窗口来承载GDI+组件,实现 父窗口 拖动.缩放.最小化.最大化 的联动 事件.缺点:电脑性能太差会出现重影. 方案2:微软解决空域的方案 原理:用一个新的窗口来承载GDI+组件,实现 父窗口 拖动.缩放.最小化.最大化 的联动 事件.缺点:电脑性能太差会出现重影. <interop:Airs…
一.SynchronizationContext类用法: 1.对于WindowsFrom应用程序,如果想在某个类中,不方便使用到控件的Invoke方法时,可以使用WindowsBase.dll下的System.Thread.SynchronizationContext. namespace FormDispatcher { public partial class Form1 : Form { public Form1() { InitializeComponent(); Thread.Curr…
首先要添加如下引用: WindowsFormsIntegration System.Drawing System.Windows.Forms 然后在xaml中添加引用 xmlns:winform="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFo…
using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Linq;using System.Windows.Forms;using System.Threading; namespace doWorker{ public partial class Form1 : Form { delegate void MyDelegate(int v…
第一步:  页面 首先引用命名空间 xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" xmlns:Chr="clr-namespace:System.Windows.Form…
Advanced Installer14.9 下载地址:https://pan.baidu.com/s/1uj2QcxWcpGdqsjAinNPIAw 提取码:sa3r  选择Visual Studio应用,点击创建项目 可以输入应用名称和所在组织的名称,在安装制作的exe,安装界面会显示所在组织名称 保存后缀aip的文件会以输入的应用名默认保存,例如我设定的输入应用名称是123,保存的文件是123.aip,当然自己可以修改文件保存位置和名字. 这一步可以随便选,在构建的时候修改. 我保存在了C…
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.InteropServices; public static partial class ConsoleManager { private static readonly ConsoleCtrlDelegate Console…