OCX空间多实例问题

elssann 2008-08-29 03:01:34
现在我有一个OCX控件 MyTestOcx, 我在FORM放了两个MyTestOcx, 一个MyTestOcx1 另外一个名字叫 MyTestOcx2

这个控件有一个事件 LoginSuccess(object sender, EventArgs e)
在这个事件里面,我写了这个代码:
a := Sender As TMyTestOcx;
ShowMessage(a.Name);


结果MyTestOcx2的LoginSuccess事件里面弹出的消息框内容是 MyTestOcx2
MyTestOcx1的LoginSuccess事件里面弹出的消息框内容也是 MyTestOcx2

这个问题怎么解决啊? 按照道理, MyTestOcx1的LoginSuccess事件里面弹出的消息框内容应该是 MyTestOcx1 啊?

如果在FORM上只放一个MyTestOcx1 ,就一切正常,有人知道这个是怎么回事吗
...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
feiren127 2008-11-05
  • 打赏
  • 举报
回复
ld,你是不是把两个搞混了,而调用的是同一个代码
zhangxuyu1118 2008-08-29
  • 打赏
  • 举报
回复
贴下OCX控件的代码吧
第1章 界面外观   实例1 带图标的菜单   实例2 显示倾斜文字   实例3 文字的颜色渐变   实例4 设置并叠加透明图片   实例5 颜色渐变进度条   实例6 透明窗体  第2章 界面与图像控制   实例7 调色程序   实例8 颜色下拉框   实例9 模拟拷贝进程   实例10 通用对话框   实例11 窗体分割   实例12 实现QQ程序的抽屉效果   实例13 以动画方式弹出/关闭窗口   实例14 半透明窗体   实例15 获得指定点颜色   实例16 判知图片的大小   实例17 图片的伸缩显示   实例18 游览大图   实例19 放大局部图形   实例20 屏幕抓图   实例21 裁剪位图   实例22 填充区域图像   实例23 列表项的提示条   实例24 浮动的鼠标提示   实例25 控制工具栏的按钮组   实例26 工具栏上设置下拉按钮   实例27 使窗体保持在最前   实例28 模仿Windows任务栏   实例29 定义光标热区   实例30 拖放选中对象  第3章 多媒体控制   实例31 调节系统音量   实例32 控制混音效果   实例33 播放WAV文件   实例34 再现Windows的CD播放器   实例35 小解霸VCD典型控制   实例36 播放rm文件  第4章 时间控制   实例37 文字逐个出现模仿打字   实例38 嵌入式电子钟   实例39 程序中嵌入日历   实例40 毫秒级的控制   实例41 读写系统时间   实例42 同步网络时间  第5章 操作系统与硬件   实例43 编写屏保程序   实例44 屏蔽系统热键和隐藏任务栏   实例45 动态调整屏幕分辨率   实例46 获取系统硬件信息   实例47 编辑注册表信息   实例48 重启动和关闭计算机   实例49 获取Windows版本号和运行模式   实例50 枚举可用字体  第6章 程序控制   实例51 向导程序   实例52 系统托盘程序   实例53 隐藏程序不被关闭程序发现   实例54 枚举系统正在运行的程序   实例55 启动并控制其他Exe程序   实例56 禁止运行程序多个实例   实例57 禁止窗体右上角各按钮   实例58 多线程方式同时进行多项任务   实例59 线程优先级示例——赛马   实例60 利用剪贴板实现Exe程序间的数据交换   实例61 通过内存映射实现Exe程序间的数据交换   实例62 通过消息机制实现Exe程序间的数据交换  第7章 磁盘文件   实例63 获取驱动器序列号   实例64 获取磁盘空间数据   实例65 判别并定位到光驱(软驱)   实例66 递归法遍历磁盘目录   实例67 获得文件属性   实例68 删除不为空的目录   实例69 快速检索指定文件   实例70 拷贝、删除和移动文件   实例71 读写INI文件   实例72 读写大块资料(二进制)文件   实例73 文件变更通知  第8章 数据库   实例74 格式化数字   实例75 中文大写数字   实例76 存取图像字段   实例77 ADO控制Access数据库   实例78 SQL语句中设置时段检索条件   实例79 SQL语句中设置字符串检索条件   实例80 SQL语句中设置多个字符串检索条件   实例81 SQL语句嵌套   实例82 代码控制链接ODBC  第9章 网络与通信   实例83 获取网卡地址   实例84 获得主机名和IP地址   实例85 端口扫描   实例86 判断网址是否有效   实例87 枚举局域网内计算机   实例88 连续批量Ping测试   实例89 设置IE的标题   实例90 收发送电子邮件   实例91 FTP上传下载   实例92 网络聊天:WINSOCK-TCP   实例93 广播信息:WINSOCK-UDP   实例94 电话拨号上网  第10章 数学算法   实例95 进制转换   实例96 随机选号   实例97 统计中英文字符数  第11章 鼠标和键盘   实例98 鼠标位置追踪   实例99 代码控制光标   实例100 模拟鼠标的单双击   实例101 模拟键盘输入   实例102 限定鼠标区域   实例103 截获鼠标移开事件   实例104 截获键盘信息  第12章 程序发布   实例105 产生程序序列号   实例106 建立一个快捷方式   实例107 设置程序为自动被执行   实例108 注册与卸载OCX   实例109 限定程序的使用时限   实例110 在IE工具栏中加入快捷图标
第6章 操作系统与Windows相关程序 6.1 启动相关 实例208 进入WinXP前发出警告 实例209 实现关机、重启计算机 实例210 将程序设置成为开机自动执行的程序 6.2 磁盘相关 实例211 判断驱动器属性 实例212 获取磁盘空间信息 实例213 获取磁盘序列号 实例214 取消磁盘共享 实例215 格式化磁盘 6.3 桌面相关 实例216 隐藏、显示开始按钮 实例217 隐藏、显示桌面文件 实例218 隐藏、显示Windows任务栏 实例219 随机修改系统桌面背景 实例220 抓取桌面 6.4 系统相关 实例221 获得Windows和System的路径 实例222 控制光驱的弹开与关闭 实例223 启动控制面板 实例224 定时关闭计算机 实例225 实现OCX控件的注册和卸载 6.5 系统监控 实例226 检测U盘是否插入 实例227 检测文件和目录是否改变 实例228 检测系统启动模式 实例229 内存使用状态 实例230 监视剪贴板内容 实例231 利用钩子技术实现键盘监控 6.6 程序相关 实例232 用列表显示系统正在运行的程序 实例233 为程序添加快捷方式 实例234 设置其他程序中编辑框内的文本 实例235 执行一个外部程序直到其结束 实例236 调用具有参数的可执行程序 实例237 编写控制面板小应用程序 实例238 编写Windows服务 实例239 阻止程序重复运行 6.7 线程同步 实例240 利用事件对象实现线程同步 实例241 利用互斥对象实现线程同步 实例242 利用临界区实现线程同步 实例243 用信号量实现线程同步 实例244 多线程实例 6.8 鼠标、键盘相关 实例245 动画鼠标 实例246 限制鼠标移动区域 实例247 鼠标穿透窗体 实例248 设置鼠标形状 实例249 控制键盘指示灯 6.9 动态链接库 实例250 访问DLL中的位图 实例251 从DLL中导出类对象
iWeb Office2000是一个基于Web的文档处理中间件 =============================================================================== 目前政府信息化,办公自动化正如火如荼的进行,而Microsoft Office是办公文档中用 的最普遍的一种文档编辑工具,其格式是最普遍公文载体,因此,办公自动化要切合实际, 与现状相结合,在办公自动化系统中,如何与Microsoft Office文档结合,是很多软件开发 公司一直在摸索的问题,我们根据这种情况,采用自定义数据结构协议,自行研制开发了基 于Web方式的Microsoft Office网络文档中间件管理方案。这个方案是整个办公系统中的文 档处理部分,完全与Microsoft Office兼容,软件开发公司可以利用该方案,与自己研制的 办公自动化系统相结合,开发出真正符合办公自动化需求的软件。 许可协议 =============================================================================== 在使用前,请认真阅读下列条款,你一旦安装、使用本程序,既表示你同意接受本协议。 1. 未经DBstep授权,你不得复制本程序或再分发或提供下载 2. 在测试使用过程中对你的计算机系统、网络系统所造成的直接或间接的损坏, 数据驿站不承担任何责任。 3. 你不得对本程序进行修改或破解或反编译 4. 未经DBstep授权许可,你不得将本软件用于商业目的 5. [数据驿站,版权所有],http://www.dbstep.com 主要功能表 =============================================================================== 1 录入支持功能 支持键盘、各种手写笔[汉王、蒙恬、联想] 等汉字录入方式。 2 文档批注功能 支持文档批注,支持文字、语音、录影等多媒体批注,可以在不写字的情况 下,实现批注。 3 痕迹保留功能 支持标准痕迹保留格式,即使文档脱离iWebOffice2000环境,也能保证痕迹 的正确显示。 4 电子盖章功能 实现印章或签名资源预保存功能,用户可以通过密码的方式来获得自己的签 名或印章,印章和签名与文档保存在一起,印章或签名可以功过系统的验证来判断真伪。 5 动态签名功能 支持多种手写笔实时动态签名,而且签名可以验证真伪。 6 远程编辑、保存功能 支持B/S模式的远程在线编辑、保存功能,用户无需其他操作,就可 以直接保存到服务器里。 7 数据库支持功能 支持文件保存到服务器数据库中,可以支持多种数据库,如SQL Server, Oracle,Sybase,MySql等。 8 文件支持功能 支持文档保存到服务器上的指定目录中。 9 模版套红功能 支持拟稿时选择模版套红,也支持定稿后的模版套红功能。 10 版本支持功能 支持版本自由控制,可以由用户创建多个版本。 11 保存HTML功能 支持将文档直接以HTML的方式保存在为服务器上。该功能可以实现文档实 时发布功能,在做内容管理或新闻管理是特别有用 12 文档兼容性 和通用的Office完全兼容、也支持金山Wps,红旗RedOffice等办公软件。 13 系统二次开发 提供强大的函数库,支持多种系统环境,多种开发语言,多种数据库。 技术特点 =============================================================================== 1、采用IE5.0以上版本内置的传输协议,通讯性能稳定,高效。 2、采用标准HTTP通讯端口80,使用方便,无需特别配置、安全性好、更无需特别设置防 火墙。 3、采用插件技术,可以完全融入IE浏览器中,方便系统维护、方便用户操作。 4、采用自定义协议包进行数据的组装和分析,系统开放性好,便于二次开发。 5、采用了Com组件和JavaBean组件技术,很好的实现了跨平台系统,便于开发。 运行环境 =============================================================================== 硬件平台: 台式机 CPU 建议Pentium800 以上,内存推荐128M 以上,硬盘10G以上空间
很多光盘上的程序,比如电脑迷光盘,开头总有一段动画,用来展现企业品牌和LOGO之用。这个动画是Flash做的,而且嵌入到程序中简直做到无缝融合,因为右键点击它也不会有那特有而烦人的Flash右键菜单。 因此将Flash融合到WinForm中能够增强程序的多媒体效果和炫丽的外观。现在我们就来看看在C#桌面程序中如何插入Flash视频,而且去掉烦人的右键菜单。 首先要插入Flash就必须使用Flash控件,在工具栏右键选择“选择项…”,然后在“COM组件”面板下点击“浏览”按钮,在本机电脑C:\WINDOWS\system32\Macromed\Flash\目录里选择Flash8.ocx(也有可能是Flash9F.ocx,版本不同所致),然后点击确定就可以了。但到这里还没有完,因为要使用Flash控件必须注册它。 在CMD里面输入如下: regsvr32 C:\WINDOWS\system32\Macromed\Flash\Flash8.ocx 系统会提示注册成功,这个时侯就可以在VS2008里面使用该控件了! 打开VS2008,新建一个Windows程序,然后把刚才我们选择的Flash控件Shockwave Flash Object拖到窗体中,这时窗体中会出现一个白色的矩形框,Name属性我们设置为Myflash,在里面可以播放我们需要的swf文件。 注意到该控件主要有几个属性: Name属性,这个是所有对象都会有的。 Menu属性,这个是Flash菜单项,默认值为true,也就是右键的时候会出现完整的Flash菜单,如果设置为False,则只出现最简的菜单(设置与关于)。 Move属性,这个属性是用来指定要播放的Flash文件的。 Playing属性,指定是否装在影片之后马上播放。 Quality属性,设置影片的质量。 Scalemode属性,设置影片的缩放模式。 Visible属性,设置影片控件的可视与否。 接下来我们在窗体中放置一个按钮,Text属性设置为LoadSwf。双击添加事件代码如下: OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "Flash文件|*.swf"; DialogResult dr = ofd.ShowDialog(); if (dr == DialogResult.OK) { Myflash.Movie = ofd.FileName; Myflash.Play(); } 这样当程序运行的时候点击按钮会要我们选择一个SWF文件,选择好后确定就自动播放了! 当然,我们还可以添加一些按钮,分别为Play,Pause Play按钮的播放功能如下: This.Myflash.Play(); Pause按钮的暂停功能如下: This.Myflash.StopPlay(); 这里就不再啰嗦了,各位园友可以自行去研究一些常用的功能。下面我们主要来讲解如何消去烦人的Flash右键菜单! 消去Flash右键菜单有两种方法(本人愚笨,到目前只发现这两种): 方法一: 这个方法比较复杂,也比较繁琐,主要是用到API函数的调用。代码如下: #region 去掉Flash右键菜单,API函数的声明 private const int GWL_WNDPROC = -4; public delegate IntPtr FlaWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); private IntPtr OldWndProc = IntPtr.Zero; private FlaWndProc Wpr = null; [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, FlaWndProc wndProc); [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam); private IntPtr FlashWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam) { if(msg == 516) //516就是对应鼠标的右键,当然你也可以用0X0204右键鼠标的16进制编码 return (IntPtr)0; //什么都不做 return CallWindowProc(OldWndProc, hWnd, msg, wParam, lParam); } #endregion 将以上代码放在窗体声明字段的地方。 注:要调用API函数就必须引用一个命名空间: using System.Runtime.InteropServices; 然后在窗体的载入事件里面添加如下代码: private void Flash_Load(object sender, EventArgs e) { this.Wpr = new FlaWndProc(this.FlashWndProc); this.OldWndProc = SetWindowLong(Myflash.Handle, GWL_WNDPROC, Wpr); //关联flash控件 } 如此则大功告成,看看是不是把Flash右键菜单给去掉了!! 方法二: 这个方法很简单,也很灵活,主要用到继承和重写等面向对象的核心内容。 首先声明一个类,让它去继承AxShockwaveFlashObjects.AxShockwaveFlash,该类是实例化Flash控件生成的类。该类中包含各种Flash的事件和属性,在这里我们只对右键菜单的事件感兴趣,因此我们去重写该事件。 类的代码如下: public class FlashRightKey : AxShockwaveFlashObjects.AxShockwaveFlash { //定义一个公共类FlashRightKey(类名自己定义)来继承AxShockwaveFlashObjects.AxShockwaveFlash(在实例化Shockwave Flash Object控件后生成)类 protected override void WndProc(ref Message m) //重载WndProc方法(此方法即消息处理机制) { if (m.Msg == 0X0204) //0×0204即鼠标右键的16进制编码 return; //返回并不输出 else base.WndProc(ref m); //如果不是右键的话则返回正常的信息 } } 类写好了,我们要在Flash控件里面使用它,必须在实例化Flash控件的时候用如下代码(写在Flash.Designer.cs文件相应的地方): private FlashRightKey MyFlash2; this.MyFlash2 = new Namespace.FlashRightKey(); 注:Namespace为工程项目的命名空间。 剩下的就和不用我多说了,大功告成,实现了Flash控件去掉右键菜单。 以上代码在 XP+VS2008+Flash8播放器 调试通过。 本文也只是抛砖引玉,至于如何获取点击事件以及和其他控件的通信则是比较高深一点的知识了,各位朋友互相勉励,想更高深的知识挺进!

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧