WPF开发调用OCX方法
在C#程序中使用ocx的方法

在C#程序中使⽤ocx的⽅法在做⼀个WPF的项⽬时(VS2008,C#),需要引⽤⼀个使⽤c++编译的ocx组件,但是运⾏的时候经常报错,⽆法使⽤其中提供的接⼝和⽅法。
上⽹查了⼀下解决办法,⽅法很多,但是很多都没有奏效。
最终找到了⼀个⽐较有效的⽅法,下⾯就是在我的程序中能够成功使⽤的例⼦,分享⼀下。
(虽然已经是去年的了—_—|||)1、在c#⼯程⽂件中,使⽤c++等其他语⾔编译的ocx组件时,若为WinForm⼯程则不会报错,若使⽤WPF等其他类型的⼯程,在调⽤组件内的⽅法时,会报错:灾难性故障未处理 ExceptionMessage="灾难性故障 (异常来⾃ HRESULT:0x8000FFFF (E_UNEXPECTED))"Source="mscorlib"ErrorCode=-2147418113解决办法:使⽤aximp(ActiveX控件导⼊程序),将 ActiveX 控件的 COM 类型库中的类型定义转换为 Windows 窗体控件。
详见。
Aximp.exe ⼀次转换整个 ActiveX 控件类型库,并产⽣⼀组程序集,这些程序集包含在原始类型库中定义的类型的公共语⾔运⾏时元数据和控件实现。
⽣成的⽂件按照下⾯的模式命名:COM 类型的公共语⾔运⾏时代理:progid.dllActiveX 控件的 Windows 窗体代理(其中 Ax 表⽰ ActiveX):Axprogid.dll⽅法:在cmd命令提⽰符窗⼝,输⼊如下命令:aximp e:\PIS2004.ocx将⽣成的PIS2004Lib.dll和AxPIS2004Lib.dll引⽤到⼯程⽂件中。
2、在c#的⼯具箱内,添加COM组件PIS2004.ocx,⼯具箱内显⽰不出来,⽆法将其作为控件拖拽到窗体上。
此时需要通过ActiveX 控件的 Windows 窗体代理AxPIS2004Lib.dll,在后台代码中实例化⼀个控件,并添加到窗体中。
wpf的itemscontrol用法

wpf的itemscontrol用法WPF中的ItemsControl用法WPF(Windows Presentation Foundation)是一种用于创建用户界面的技术,而ItemsControl是其重要的控件之一。
ItemsControl用于在界面中显示集合类型的数据,并提供了多种方式来定制和呈现数据。
ItemsControl的主要作用是将数据源绑定到界面上的可视元素,并将每个元素定义为一个模板。
以下是使用ItemsControl的几种常见用法:1. 基本使用方法:在XAML中,可以通过使用ItemsControl元素以及其ItemTemplate属性来显示数据。
首先,需要将ItemsSource属性绑定到要显示的数据源,然后通过定义ItemTemplate来指定每个元素的外观。
例如:```xml<ItemsControl ItemsSource="{Binding MyData}"><ItemsControl.ItemTemplate><DataTemplate><!-- 在这里定义每个元素的显示方式 --></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>```2. 不同的布局方式:ItemsControl提供了多种布局方式来呈现数据。
例如,StackPanel布局可以将元素垂直或水平排列,WrapPanel布局可以自动换行显示元素。
可以使用ItemsPanel 属性来指定所需的布局方式。
例如:```xml<ItemsControl ItemsSource="{Binding MyData}"><ItemsControl.ItemsPanel><ItemsPanelTemplate><!-- 在这里定义所需的布局方式,如StackPanel或WrapPanel --></ItemsPanelTemplate></ItemsControl.ItemsPanel><ItemsControl.ItemTemplate><DataTemplate><!-- 在这里定义每个元素的显示方式 --></DataTemplate></ItemsControl.ItemTemplate></ItemsControl>```3. 利用数据模板选择器:有时候,我们可能需要根据数据的特定属性来选择不同的数据模板。
调用ocxActiveX控件详解(做一个简单的ocx控件)

调⽤ocxActiveX控件详解(做⼀个简单的ocx控件)最近做的项⽬都和插件有关,就是在页⾯中调⽤插件的⽅法,然后进⾏操作。
插件就是ocx ActiveX控件,具体的说明可以⾃⼰去了解⼀下,在这⾥就不做赘述。
具体调⽤⽅式很简单:1、在页⾯中写⼀个object标签,标签中定义⼀个classid属性,这个属性是获取到插件的关键<object id="ocx" classid="clsid:c998ae90-5ffc-4a58-97d2-490a414bd6e5"></object>2、直接在js中获取到这个dom,然后就可以调⽤插件中的⽅法let ocx = document.getElementById("ocx");let sum = ocx.Add(1,2);在使⽤过程中遇到了很多问题,于是⾃⼰去摸索了⼀下如何制作⼀个ocx插件,也能够帮助⾃⼰加深⼀些使⽤⽅⾯的了解。
这⾥使⽤Visual Studio Community 2019,先下载必须的组件和依赖包。
使⽤C++的桌⾯开发和Visual Studio扩展开发这两项必须要勾选。
然后桌⾯开发中还需要勾选与MFC相关的库,如果不勾选的话⽆法新建MFC项⽬勾选完成后就开始下载相关的包,这个过程需要等待⼀会。
下载完成后就可以开始新建⼀个项⽬,在这⾥选择MFC ActiveX控件,命名为MyMFCActiveXControl然后就会⽣成⼀系列控件名,头⽂件等等的⽂件名,这⾥基本上不⽤做什么操作,直接完成就好。
唯⼀需要注意的是⼀个控件类型ID,这个ID我们后⾯会⽤到。
点击完成后,就会⽣成⼀系列与插件相关的⽂件,这些⽂件⾥⾯包含了插件的类,头⽂件,描述等信息。
因为不是专门学习C++的,不对⾥⾯的原理和结构进⾏探究,就取我需要的内容就⾏。
来找⼀找那个神奇的classid。
WPF自定义ItemsControl控件

该控件叫 Sum m ar y, 主要是一些汇总信息的显示,有几个地方用,之前都是分散到各个XA ML 文件里,不统一。
本人WPF新手,对XAML了解不多,做这个软件基本上都是用CM,界面布局用Avalon Dock。
由于缺乏相关经验,又没有一个能问得上的人指导,写这个控件费了我很长时间(啥时有空啥时动动)。
之前主要做一些功能方面的,没有心思美化界面,现在虽然还有很多功能没写,但是基本上够自己用了,放下心思来做一些界面上的东西,要不然何苦选择WPF?先看一下图:该Custo m Cont rol 由4部分组成:大标题,小标题,值及Detail。
虽然细分这么多,但实质上还是一个列表类的控件,所以选择继承自 Item sC ontro l.做这个控件的时候,遇到了一些详细的问题不知道怎么解决,Google/Bing 都没有找到我要了解的,Baidu更不用提了,漫天的转载,Copy.1, 类似 Com boB ox 的 Displa yMemb erPat h 如何弄?既然都自定控件了,当然是想让它适用不同场景,不能局限于某一个实体类,最好是能像Displa yMemb erPat h ValueM em ber Path这样的属性。
这里,我定义了:Item Ti tlePa thPro perty及 Item Va luePa thPro perty来处理。
2,有了上面两个依赖属性,但是还不足以处理更多的场景,最好是能有不同的 Tem pla te 。
这里我定义了:TitleT em pla te / ValueT em pla te及De tailT em pla te.第一个问题,只需定义一个简单的 DataTe m plat e ,然后用 Tem pla teBin ding即可做到。
如何在WPF中使用ACTIVEX

如何在WPF中使用ACTIVEX在WPF(Windows Presentation Foundation)中使用ActiveX控件涉及以下几个步骤:1. 添加对ActiveX控件的引用:在Visual Studio中打开WPF项目,右键单击项目名称,选择“添加→引用”。
在打开的对话框中,选择“COM”选项卡,然后浏览选择要添加的ActiveX控件的.dll文件。
点击“确定”按钮进行引用添加。
2. 在XAML中添加WindowsFormsHost控件:在WPF的XAML文件中引入WindowsFormsIntegration命名空间,并添加一个名为WindowsFormsHost的控件。
这个控件将用作ActiveX控件的容器。
```xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"xmlns:wfIntegration="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsForms Integration"...<wfIntegration:WindowsFormsHost Name="windowsFormsHost"><Grid><!-- ActiveX控件将被放置在此 --></Grid></wfIntegration:WindowsFormsHost>```3. 创建和设置ActiveX控件:在项目的代码文件中,使用ActiveX 控件的类创建一个实例,并将其添加到WindowsFormsHost控件中。
```using System.Windows.Forms;...// 在适当的位置创建ActiveX控件实例var activeXControl = new SomeActiveXControl(;// 设置ActiveX控件的属性activeXControl.SomeProperty = value;// 将ActiveX控件添加到WindowsFormsHost控件中windowsFormsHost.Child = activeXControl;```4. 处理ActiveX控件的事件:如果需要处理ActiveX控件的事件,可以为其添加事件处理程序。
wpf toolcontrols 控件的用法

wpf toolcontrols 控件的用法WPF(Windows Presentation Foundation)是一种强大的图形用户界面框架,它提供了丰富的工具和控件来构建高质量的交互式应用程序。
其中,ToolControls控件是一类特殊的控件,它们提供了一些常用的工具和功能,以帮助开发人员更轻松地创建应用程序。
在本篇文章中,我们将介绍WPF ToolControls控件的用法,包括其基本概念、常用控件以及使用方法。
一、基本概念ToolControls控件在WPF中提供了一系列常用的工具和控件,如按钮、文本框、下拉菜单等。
这些控件通常具有一些共同的属性、事件和方法,可以帮助开发人员快速创建应用程序。
在WPF中,ToolControls控件通常是通过ToolControl 容器控件来使用的,如Toolbox、ToolBar等。
ToolControl容器控件提供了一个集中管理工具和控件的环境,使得开发人员可以轻松地组织和访问这些控件。
二、常用控件1. Button控件:按钮控件是最基本的ToolControls控件之一,它允许用户与应用程序进行交互。
Button控件通常用于触发一些操作或响应某些事件。
2. TextBox控件:文本框控件允许用户输入文本信息。
TextBox控件提供了一个文本编辑框,用户可以在其中输入和编辑文本。
3. ComboBox控件:下拉菜单控件允许用户从预定义选项中选择一个值。
ComboBox控件提供了一个下拉列表,用户可以从列表中选择一个选项。
4. ListBox控件:列表框控件允许用户从一组选项中选择一个或多个项。
ListBox控件提供了一个可滚动的列表,用户可以从列表中选择项。
5. ToolTip控件:工具提示控件允许在用户将鼠标悬停在特定元素上时显示一些附加信息。
ToolTip控件提供了一个简单的提示框,可以显示一些有关元素的额外信息。
三、使用方法要使用ToolControls控件,您需要将它们添加到ToolControl容器控件中,并设置相应的属性、事件和方法。
wpf调用用户控件方法

wpf调用用户控件方法在WPF中,调用用户控件的方法通常涉及到对该控件的实例化以及对该实例的直接访问。
以下是一个简单的步骤说明如何调用用户控件的方法:1. 首先,确保你的用户控件已经正确地在你的项目中注册。
这通常通过在XAML中定义控件并赋予一个名称来完成。
例如:```xml<local:MyUserControl x:Name="myUserControl"/>```这里的`local`是用户控件所在命名空间的别名,`MyUserControl`是用户控件的类名,`x:Name`赋予了控件一个实例名`myUserControl`。
2. 在你的代码后面文件中(例如MainWindow.xaml.cs),你可以通过控件名来访问这个实例并调用其方法。
例如:```csharpmyUserControl.MyMethod();```这里假设`MyMethod`是你想要调用的用户控件的方法。
请注意,你的用户控件需要是public的,并且你想要调用的方法也必须是public的,这样你才能从其他类中访问到它们。
如果方法是private或protected的,那么你只能在定义它们的类或派生类中访问这些方法。
另外,如果用户控件是在某个容器(如Grid、StackPanel等)中的,你可能需要先获取对容器的引用,然后通过容器来访问该控件。
例如,如果控件是在名为`gridContainer`的Grid中,你可以这样获取:```csharpvar myUserControl = gridContainer.FindName("myUserControl") as MyUserControl;if(myUserControl != null){myUserControl.MyMethod();}```在这里,`FindName`方法用于查找指定名称的元素,然后我们将其转换为`MyUserControl`类型。
wpf tabcontrol控件用法

wpf tabcontrol控件用法一、WPF TabControl 控件简介WPF TabControl 控件是 WPF 中的一个常用控件,它可以将多个子控件以选项卡的形式展示出来,用户可以通过点击选项卡来切换显示的内容。
TabControl 可以方便地实现多页签功能,并且可以自定义选项卡的样式和布局。
二、TabControl 控件的基本用法1. 创建 TabControl 控件在 XAML 中创建一个 TabControl 控件非常简单,只需要在窗口或页面中添加以下代码即可:```xml<TabControl><!-- 子控件 --></TabControl>```2. 添加子控件在 TabControl 中添加子控件也很容易,只需要在 TabControl 标签内部添加其他控件即可,这些子控件将作为选项卡内容显示出来。
例如:```xml<TabControl><TabItem Header="选项卡1"><TextBlock Text="这是第一个选项卡" /></TabItem><TabItem Header="选项卡2"><TextBlock Text="这是第二个选项卡" /></TabItem></TabControl>```上面的代码创建了两个选项卡,每个选项卡都包含一个 TextBlock 控件。
3. 设置默认选中的选项卡默认情况下,TabControl 的第一个子元素会被设置为默认显示的选项卡。
如果想要更改默认选择,则可以使用 SelectedIndex 属性或SelectedItem 属性。
例如:```xml<TabControl SelectedIndex="1"><TabItem Header="选项卡1"><TextBlock Text="这是第一个选项卡" /></TabItem><TabItem Header="选项卡2"><TextBlock Text="这是第二个选项卡" /></TabItem></TabControl>```上面的代码将默认选择第二个选项卡。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WPF开发调用OCX方法
1、注册OCX
2、aximp 命令生成dll 和cs的类文件
c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin>aximp
c:\windows\syswow64\hqbmp.ocx /source
生成的源: c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\AxHQBMPLib.cs
生成的程序集: c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\HQBMPLib.dll
生成的程序集: c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\AxHQBMPLib.dll
3个文件都拷贝到项目中,两个dll通过引用方式引用到项目中,cs通过添加现有项加到项目中
4、窗口引用dll
using AxHQBMPLib;
using HQBMPLib;
5、实例化控件
AxHQBmp hb = new AxHQBmp();
6、实例化完成后,需要调用CreateControl创建控件
hb.CreateControl();
一、引用forms
二、版本号的错误,把那行注释掉
try
{
AxHQBmp hb = new AxHQBmp();
hb.CreateControl();
hb.Logon("01|");
MessageBox.Show("返回信息:" + hb.respMsg);
}
catch (Exception ex)
{
MessageBox.Show("错误信息:" + ex.Message); }。