作者:admin 发布于:2012-3-30 12:57 Friday
分类:.NET
30Mar
尽
管MS为我们提供了丰富的.net
framework库,我们的程序C#开发带来了极大的便利,但是有时候,一些特定功能的控件库还是需要由第三方提供或是自己编写。当需要用到Dll引用
的时候,我们通常会通过“添加引用”的方式将它们纳入到项目中,然后就可以像使用自己的类一样方便的使用它们了。但是,有些Dll库(OCX)文件是需要
注册到Windows注册表后才能正常添加和使用的。本文介绍两种为Dll库(OCX)自动注册的方法,为大家提供参考。
首先,大家都知道在Windows的“运行”中,输入“Regsvr32.exe 路径”这样的方法来手动注册Dll控件(OCX),显示这种方法对于程序的自动化部署等带来极大的不便,因此,今天我们着重介绍如何用C#实现自动注册。
方法一:调用Regsvr32法
既然可以在运行栏中输入“Regsvr32.exe 路径”的方法来注册,那么,一定可以在C#程序...
阅读全文>>
标签: c# dll ocx
评论(0)
引用(52)
浏览(24086)
作者:admin 发布于:2012-3-29 18:17 Thursday
分类:.NET
29Mar
重新安装问题:已经安装了该产品的另一个版本
假如你已经在一台机器上安装了一个应用 程序, 版本1.0,后来这个应用程序有了新版本2.0,你想不用卸 载机器上?有1.0版本,运行2.0的安装程序时自动卸载以 前的版本,然后安装新版本。
其实Visual Studio对此功能提供了很好的支持。
具体做法是在Visual Studio中打开安装项目,在 解决方案资源管理器 中选中安装项目的项目文件,切换到 属性
窗口。
将Version属性设置成比?先大的数,比如2.0,按 回车,这时会弹出一对话框,询问是否更改ProductCode, 选择是;
然后将RemovePreviousVersions属性设置为True. 最后重新编译安装项目即可。
阅读全文>>
评论(0)
引用(526)
浏览(70606)
作者:admin 发布于:2012-3-29 14:38 Thursday
分类:.NET
29Mar
一、MessageBox.Show(this,e.ErrorMsg, "错误提示", MessageBoxButtons.OK,MessageBoxIcon.Error);
这种情况是在这个方法是以事件形式来给另一线程操作的吧!
二、MessageBox过程放到 form里面,用一个函数封装起来
在线程里面 BeginInvoke它
还有,MessageBox.Show有个参数,是IWin32Window owner
MSDN里面这么说:
可
以使用 owner 参数指定一个特定对象,该对象实现
IWin32Window接口,而该接口充当对话框的顶级窗口和所有者。消息框是一种模式对话框,这表示除了该模式窗体上的对象之外,不能对其他对象进行
任何输入(通过键盘或鼠标单击)。该程序必须隐藏或关闭有模式窗体(通常是响应某个用户操作),然后才能对另一窗体进行输入。
在消息框中最多...
阅读全文>>
标签: MessageBox
评论(0)
引用(51)
浏览(33432)
作者:admin 发布于:2012-3-29 14:23 Thursday
分类:.NET
29Mar
由于项目中存在这样的载入的画面:在界面上有显示载入信息的Label控件和进度条,如果采用单线程则在载入数据的时候UI界面会被锁死,造成假死的感觉。为了给一个更友好的界面,因此有必要引入多线程技术,使得软件更加“人性化”。
但随后在子线程中访问界面上的控件的时候会出现异常,不能操作主线程所控制的UI界面。看来这得用到委托技术了!
首先我们定义委托:
public delegate void loadin(string data, int progress);
定义委托用delegate关键字,随后跟着一个返回值(这里void就是没有返回值了),loadin是委托名,后面带着两个参数,分别代表显示载入的数据和载入进度条的数值!
在窗体的Load事件里面我们定义一个子线程,用于在后台载入数据并显示载入情况。
定义线程:
ThreadStart ts = newThreadStart(Downin);...
阅读全文>>
标签: 委托
评论(0)
引用(112)
浏览(21240)
作者:admin 发布于:2012-3-29 14:07 Thursday
分类:.NET
29Mar
1.创建类,继承接口IWin32Window
public class WindowWrapper : System.Windows.Forms.IWin32Window
{
private System.IntPtr _hwnd;
public WindowWrapper(System.IntPtr handle)
{
_hwnd = handle;
}
public System.IntPtr Handle
{
get { return _hwnd; }
}
}
2.然后封装系统获取主窗体API
[System. Runtime. InteropServices. DllImport ( "user32")]
public st...
阅读全文>>
标签: MessageBox
评论(0)
引用(115)
浏览(49311)