=====潇洒的版权线======www.ayjs.net===== Aaronyang ===== AY ====== 安徽 六安 杨洋 ======   未经允许不许转载 ======

1.新建个WPF应用程序,然后添加一个windows窗体

此时左侧工具箱自动winform的工具箱了。

然后添加个按钮,并设置DialogResult属性为OK

打开WPF的MainWindow.xaml添加一个按钮,单击事件如下

    private void btnOpenWinform_Click(object sender, RoutedEventArgs e)
{
ShowSwfForm ss = new ShowSwfForm();
if (ss.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
MessageBox.Show("OK按钮被单击");
}
}

效果图:

 =============潇洒的版权线==========www.ayjs.net===== Aaronyang ========= AY =========== 安徽 六安 杨洋 ==========   未经允许不许转载 =========

显示非模态窗口,首先添加WindowsFormIntegration.dll

再添加一个按钮,我们打开winform的界面的事件如下

 private void btnOpenNormallWinform_Click(object sender, RoutedEventArgs e)
{
ShowSwfForm ss = new ShowSwfForm();
//拦截键盘事件,方便界面获得键盘操作
WindowsFormsHost.EnableWindowsFormsInterop();
ss.Show();
}

不加这行 WindowsFormsHost.EnableWindowsFormsInterop();代码,打开窗口后按键将无法捕获,例如tab键,你可以试试。加上后,tab后按钮会有虚线框,说明tab键生效了。

2.启用winform的可视化效果

 public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
//System.Windows.Forms.Application.EnableVisualStyles();
}
}

试一下定义个样式,发现不会生效的,但是上面那行代码EnableVisualStyles应该是让按钮跟随系统变化的

3. 一个界面上的winform控件和wpf控件

winform的每个控件都是独立窗口,每个控件都拥有自己屏幕的区域。

wpf就有一个浮在屏幕上的顶级窗口。所以wpf只要有单独的顶级窗口句柄,并且wpf引擎组织整个窗口,窗口才能更好的渲染。WPF有些元素使用单独的窗口句柄。例如菜单、工具提示以及组合框的下拉部分。这些都有扩展窗口边界的能力。

"空域"原则,WPF内容上放置winform窗体内容,winform窗体内容就会总在wpf的上面,而不管标记在什么地方声明的。所以不能通过重叠来组合WPF和winform窗体内容。意味着不能使用动画飞过winform窗体渲染的区域。同样内容也不能混合在一起。所以WPF的使用flash一般套个winform,但是flash当背景还是比较难的。

4.在WPF中驻留winform的控件,我们需要使用WindowsFormsHost控件,如果要使用winform的控件,需要引入  xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"

<Window x:Class="win32WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowStartupLocation="CenterScreen"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
Title="MainWindow" Height="700" Width="800"> <Grid>
<Grid.RowDefinitions>
<RowDefinition Height="18*"/>
<RowDefinition Height="205*"/>
</Grid.RowDefinitions>
<Button x:Name="btnOpenWinform" Click="btnOpenWinform_Click" Content="模态化打开winform" HorizontalAlignment="Left" Margin="28,10,0,0" VerticalAlignment="Top" Width="145"/>
<Button x:Name="btnOpenNormallWinform" Click="btnOpenNormallWinform_Click" Content="正常winform" HorizontalAlignment="Left" Margin="178,10,0,0" VerticalAlignment="Top" Width="145"/>
<WindowsFormsHost Grid.Row="1"> </WindowsFormsHost>
</Grid>
</Window>

取值的话,直接给NumericUpDown控件加上x:name="nud"依赖属性,然后后台直接this.nud.Value.ToString();

接着我们引入Flash的com组件

引入玩才发现,2015年的flash  com组建已经变了,网上的基础教程一般没用了。好吧,自己琢磨。

没有找到网上说的AxShockwaveFlash控件。

但是,算了,还是果断放弃吧,我选择了第二种方案,找到C:\Windows\System32\Macromed\Flash目录,找到了Flash.ocx和Flash64_17_0_0_134.ocx,我不知道哪个有用,猜测Flash64_17_0_0_134.ocx应该是64位的

移除刚刚的ShockwaveFlash引用。我还是打开COM组建引用,然后浏览本地,选择了Flash.ocx,结果发现还是跟上次一样,好吧...思考中..

然后我打开了ShowSwfForm.cs ,然后 winform版本的设计器的工具箱,右键常规-选择项-COM组件,找到Shockwave Flash Object,单击确定。接着拖动这个控件到winform窗体上,尼玛..

     出现了 

好吧,你赢了,我又回到刚刚的WPF页面,写下了熟悉的AxShockwaveFlash代码,接下来就简单了。

<Window x:Class="win32WPF.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" WindowStartupLocation="CenterScreen"
xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
xmlns:f="clr-namespace:AxShockwaveFlashObjects;assembly=AxInterop.ShockwaveFlashObjects"
Title="MainWindow" Height="700" Width="800" Loaded="Window_Loaded"> <Grid>
<Grid.RowDefinitions>
<RowDefinition Height="18*"/>
<RowDefinition Height="205*"/>
</Grid.RowDefinitions>
<Button x:Name="btnOpenWinform" Click="btnOpenWinform_Click" Content="模态化打开winform" HorizontalAlignment="Left" Margin="28,10,0,0" VerticalAlignment="Top" Width="145"/>
<Button x:Name="btnOpenNormallWinform" Click="btnOpenNormallWinform_Click" Content="正常winform" HorizontalAlignment="Left" Margin="178,10,0,0" VerticalAlignment="Top" Width="145"/>
<WindowsFormsHost Grid.Row="1" x:Name="wfh">
<!--<wf:NumericUpDown Maximum="100" Minimum="0" Increment="10" Width="100" Dock="Top"></wf:NumericUpDown>-->
<f:AxShockwaveFlash x:Name="flashContainer"/>
</WindowsFormsHost>
</Grid>
</Window>

OK,后台代码,网上都是能百度出来的了。

   =============潇洒的版权线==========www.ayjs.net===== Aaronyang ========= AY =========== 安徽 六安 杨洋 ==========   未经允许不许转载 =========

       -------------------小小的推荐,作者的肯定,读者的支持。推不推荐不重要,重要的是希望大家能把WPF推广出去,别让这么好的技术消失了,求求了,让我们为WPF技术做一份贡献。-----------------

[Aaronyang] 写给自己的WPF4.5 笔记24 [与winform交互-flash-DEMO-收尾篇1/6]的更多相关文章

  1. [Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]

    原文:[Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]  我的文章一定要做到对读者负责,否则就是失败的文章  -- ...

  2. [Aaronyang] 写给自己的WPF4.5 笔记13[二维自定义控件技巧-可视化状态实战,自定义容器,注册类命令,用户控件补充]

     我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 博文摘要:欢迎大家来支持我的<2013-2015 Aar ...

  3. [Aaronyang] 写给自己的WPF4.5 笔记[2依赖属性]

    人生的意义不在于拿一手好牌,而在于打好一手坏牌 --Aaronyang的博客(www.ayjs.net)-www.8mi.me =============时隔两年后再看WPF========== 因为 ...

  4. [Aaronyang] 写给自己的WPF4.5 笔记19[Visual类图文并茂讲解]

    文章虽小,内容还好,且看且珍惜. aaronyang版权所有,不许转载,违者必究 当界面上使用数千个矢量图形,例如实时统计图,粒子碰撞,比如超级玛丽游戏,图像一直在绘,过量的使用WPF的元素系统和Sh ...

  5. [Aaronyang] 写给自己的WPF4.5 笔记[3MenuItem中的icon]

    敢于尝试,就等于你已经向成功迈出了第一步 --Aaronyang的博客(www.ayjs.net)-www.8mi.me =============时隔两年后再看WPF========== 因为以前的 ...

  6. [Aaronyang] 写给自己的WPF4.5 笔记[1布局]

    挫折时,要像大树一样,被砍了,还能再长:也要像杂草一样,虽让人践踏,但还能勇敢地活下去 --Aaronyang的博客(www.ayjs.net)-www.8mi.me =============时隔两 ...

  7. [Aaronyang] 写给自己的WPF4.5 笔记9[复杂数据处理三步曲,数据展示ListView泪奔2/3]

     我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 作者留言:        小小的推荐,作者的肯定,读者的支持. ...

  8. [Aaronyang] 写给自己的WPF4.5 笔记8[复杂数据处理三步曲,数据视图精讲1/3]

    真的好累了 ,笑了.做回自己吧       -------------      Aaronyang技术分享 www.ayjs.net 博文摘要: 详细介绍了WPF中视图的种类和开始学之前的准备工作 ...

  9. [Aaronyang] 写给自己的WPF4.5 笔记7[三巴掌-ItemsControl数据绑定详解与binding二次处理 3/3]

    我要做回自己--Aaronyang的博客(www.ayjs.net) 博客摘要: 全方位的讲解了转换器的使用,单值,多值转换器,条件转换器,StringFormat等方式 详细的实践地讲解了Items ...

随机推荐

  1. centos python web 站点搭建

    yum install zlib-devel bzip2-devel pcre-devel openssl-devel ncurses-devel 参照:http://www.cnblogs.com/ ...

  2. Jade之Extends

    Extends jade允许多个jade文件继承一个jade文件. jade: //- layout.jade doctype html html head block title title Def ...

  3. CCF 201612-1 最大波动 (水题)

    问题描述 小明正在利用股票的波动程度来研究股票.小明拿到了一只股票每天收盘时的价格,他想知道,这只股票连续几天的最大波动值是多少,即在这几天中某天收盘价格与前一天收盘价格之差的绝对值最大是多少. 输入 ...

  4. 图层的核心动画(CABaseAnimation)

    Main.storyboard // //  ViewController.m //  7A14.图层的核心动画 // //  Created by huan on 16/2/4. //  Copyr ...

  5. 解决hibernate中的懒加载(延迟加载)问题

    解决hibernate中的懒加载(延迟加载)问题   我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是 ...

  6. 项目学习——电力系统底层架构ssh

    电力系统底层架构1.建立web工程 创建数据库 导入向对应的jar包2. 持久层: (1)在cn.itcast.elec.domain中创建持久化类ElecText @SuppressWarnings ...

  7. Nginx学习笔记(六) 源码分析&启动过程

    Nginx的启动过程 主要介绍Nginx的启动过程,可以在/core/nginx.c中找到Nginx的主函数main(),那么就从这里开始分析Nginx的启动过程. 涉及到的基本函数 源码: /* * ...

  8. 一个Java应用,三种字体风格(Java, Windows, Mac),真是蛋疼

    大家看看下面这张图,红色圈起来的是Java难看至极的字体渲染,黄色圈起来的是正常的Windows渲染,绿色是Mac风格的渲染. 其实我感觉正常风格就挺好的,就是看那个Java的Swing菜单,非常不顺 ...

  9. mysql where执行顺序

    where执行顺序是从左往右执行的,在数据量小的时候不用考虑,但数据量多的时候要考虑条件的先后顺序,此时应遵守一个原则:排除越多的条件放在第一个. 在用MySQL查询数据库的时候,连接了很多个过滤条件 ...

  10. iOS开发——高级技术&调用地图功能的实现

    调用地图功能的实现 一:苹果自带地图 学习如逆水行舟,不进则退.古人告诉我们要不断的反思和总结,日思则日精,月思则月精,年思则年精.只有不断的尝试和总结,才能让我们的工作和生活更加 轻松愉快和美好.连 ...