现在的位置: 首页 > 综合 > 正文

KingDZ 变菜鸟,每日一个C#小实例之—C#MessageBox小技巧

2013年05月03日 ⁄ 综合 ⁄ 共 1653字 ⁄ 字号 评论关闭

大家好,昨天俺休息了一天,木有给大家更新实例,今天呢,决定了,哈哈,更新三个。希望大家给俺好评哦,3Q,开始吧,第一个来个简单的。C#里面的MessageBox相信大家都玩过,哈哈。今天我们就实现让他自己数秒之后自己关闭。嘿嘿

今天看到一个有意思的“老师”,所以奉献给大家

写字楼里写字间,写字间里程序员;程序人员写程序,又拿程序换酒钱。
酒醒只在网上坐,酒醉还来网下眠;酒醉酒醒日复日,网上网下年复年。

宁愿老死程序间,只要老板多发钱;小车大房不去想,撰个2k好过年。
若要见识新世面,公务员比程序员;一个在天一在地,而且还比我们闲。
别人看我穿白领,我看别人穿名牌;天生我才写程序,臀大近视肩周炎。

年复一年春光度,度得他人做老板;老板扣我薄酒钱,没有酒钱怎过年.
春光逝去皱纹起,作起程序也委靡;来到水源把水灌,打死不做程序员.
别人笑我忒疯癫,我笑他人命太贱;状元三百六十行,偏偏来做程员!

但愿老死电脑间,不愿鞠躬老板前;奔驰宝马贵者趣,公交自行程序员。
若将程员比妓女,一在平地一在天;若将程员比车马,他得驱驰我无闲。
别人笑我忒疯癫,我笑自己命太贱;不见满街漂亮妹,哪个归得程序员。

不想只挣打工钱,那个老板愿发钱;小车大房咱要想,任我享用多悠闲。
比尔能搞个微软,我咋不能捞点钱;一个在天一在地,定有一日乾坤翻。
我在天来他在地,纵横天下山水间;傲视武林豪杰墓,一樽还垒风月山。

电脑面前眼发直,眼镜下面泪茫茫;做梦发财好几亿,从此不用手指忙。
哪知梦醒手空空,老板看到把我训;待到老时眼发花,走路不知哪是家。

各位在此穷抱怨,可知小弟更可怜;俺学编程两年半,至今没赚一分钱。
听说三十是末日,二十三岁在眼前;发誓立志傍微软,渺渺前程对谁言?

 

哦了,开始吧,这里我们有好几种办法,首先是网络上面最常见的一种调用APi的方法。当然我换应大家和我讨论其他的办法,希望大家不吝赐教。

[DllImport("User32", CharSet = CharSet.Auto)]
private extern static IntPtr FindWindow(string lpClassName,string lpWindowName);
[DllImport("User32", CharSet = CharSet.Auto)]
public static extern int PostMessage(IntPtr hwd, int msg, IntPtr wparam, IntPtr lParma);
public const int WM_CLOSE = 0x10;

上面的这两个API函数的用法如下

http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx

http://msdn.microsoft.com/en-us/library/ms644944(VS.85).aspx

 

大家可以去,仔细的研究一下。这里我们用到的就是用一个计时器,然后调用API捕获到弹出的窗口,然后实现我们想要的效果。

// 按照MessageBox的标题,找出Messagebox这个弹出框

void KillMessageBox() {
    IntPtr ptr = FindWindow(null, "自动关闭");
    if (ptr != IntPtr.Zero)

        PostMessage(ptr,WM_CLOSE,IntPtr.Zero,IntPtr.Zero);

}

FindWindow就是专门找出窗口准备的,Timer的Tick事件中

void setTimer_Tick(object sender, EventArgs e)
{
    KillMessageBox();
    ((Timer)sender).Stop();
}

哈哈,完事。看效果吧,代码后面附上

212

 

当然,你也可以用这个API

static extern bool EndDialog(IntPtr hDlg, out IntPtr nResult);

哈哈,例子太简单了,OK完事。

 

MyMessageBox.rar代码中有我发现的一个非常棒的类,给大家了

抱歉!评论已关闭.