你好,今天第一次做winform label 换行,遇到个问题

&&&您需要以后才能回答,未注册用户请先。你好!请问你的那个C#发布winform程序的问题是怎样解决的啊?_百度知道
你好!请问你的那个C#发布winform程序的问题是怎样解决的啊?
提问者采纳
你说的是安装后自动更新吗?我做的相当复杂,期待高人出现呐
提问者评价
其他类似问题
winform的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1886人阅读
&WinForm 下我们可以调用MessageBox.Show 来显示一个消息对话框,提示用户确认等操作。在有些应用中我们需要通过程序来自动关闭这个消息对话框而不是由用户点击确认按钮来关闭。然而.Net framework 没有为我们提供自动关闭MessageBox 的方法,要实现这个功能,我们需要使用Window API 来完成。
&&&&& 首先我们需要找到这个消息对话框的窗口句柄,一个比较简单的方法就是用 FindWindow API 来查找对应的窗体句柄。
第一种方法:
[DllImport(&user32.dll&,&SetLastError&=&true)]
&&&&&&&&static&extern&IntPtr&FindWindow(string&lpClassName,&string&lpWindowName);
&有了这两个API函数,我们就可以来关闭消息对话框了。思路是在调用MessageBox.Show 前启动一个后台工作线程,这个工作线程等待一定时间后开始查找消息对话框的窗口句柄,找到后调用EndDialog API 函数关闭这个消息对话框。不过这个方法有个问题,就是如果同时又多个同名的消息对话框(可能不一定是这个应用的),这样做可能会关错窗口,如何解决这个问题,我还没有想出比较好的方法,如果大家有更好的方法解决这个问题,不妨一起讨论讨论。
&&&&& 我根据这个思路编写了延时关闭消息对话框的函数
public void ShowMessageBoxTimeout(string text, string caption,
MessageBoxButtons buttons, int timeout)
ThreadPool.QueueUserWorkItem(new WaitCallback(CloseMessageBox),
new CloseState(caption, timeout));
MessageBox.Show(text, caption,buttons);
这个函数中timeout 参数单位是毫秒,其他参数和MessageBox.Show的参数含义是一样的,这里不再详细说明。
&& 这个函数中首先利用线程池调用一个工作线程 CloseMessageBox ,并将对话框的标题和延时时间通过CloseState这个类传递给CloseMessageBox函数。
&& CloseState 的定义如下:
private class CloseState
private int _T
/// &summary&
/// In millisecond
/// &/summary&
public int Timeout
private string _C
/// &summary&
/// Caption of dialog
/// &/summary&
public string Caption
public CloseState(string caption, int timeout)
_Timeout =
_Caption =
最后就是CloseMessageBox函数了,直接看代码吧
&&&&&&&&private&void&CloseMessageBox(object&state)
&&&&&&&&&&&&CloseState&closeState&=&state&as&CloseS
&&&&&&&&&&&&Thread.Sleep(closeState.Timeout);
&&&&&&&&&&&&IntPtr&dlg&=&FindWindow(null,&closeState.Caption);
&&&&&&&&&&&&if&(dlg&!=&IntPtr.Zero)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&IntPtr&
&&&&&&&&&&&&&&&&EndDialog(dlg,&out&result);
&&&&&&&&&&&&}
第二种方法:
&&//注意提示出现的是、否按钮 不能自动关闭
//例如这个提示就不能自动关闭:
//if (MessageBox.Show(&是否接听?&, &来电:& + num, MessageBoxButtons.YesNo,
//MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
&&&&&&&&&&&&&&&// {}
//以下是源码
[DllImport(&coredll.dll&, EntryPoint = &FindWindow&, CharSet = CharSet.Auto)]
private extern static IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport(&coredll.dll&, CharSet = CharSet.Auto)]
public static extern int PostMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
public const int WM_CLOSE = 0x10;
private string _//标题名字//在弹出提示窗体,需为这个变量赋值例如:if (MessageBox.Show(&是否接听?&, &来电:& + num, MessageBoxButtons.YesNo,
MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
&&&&&&&&&&&&&&& {}赋值就是:_caption=&来电:& +//明白
&[System.Runtime.InteropServices.DllImport(&coredll&)]
&&&&&&& public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);//参数:窗体句柄
&&&&&&& public const int SW_MINIMIZE = 6;
&&&&&&& public static string CodePath = &&;
//这个方法直接调用就行,直接关闭当前show出的界面,根据那个标题名字
private void KillMessageBox()
//查找MessageBox的弹出窗口,注意对应标题
IntPtr ptr = FindWindow(null, this._caption);
if (ptr != IntPtr.Zero)
//查找到窗口则关闭
PostMessage(ptr, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
catch (Exception ex)
MessageBox.Show(&关闭show&+ex.ToString());
参考网上资料:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:260380次
积分:3033
积分:3033
排名:第4555名
原创:91篇
转载:92篇
评论:83条
WindowsCE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,Windows CE的图形用户界面相当出色。Windows CE操作系统是Windows家族中的成员,专门设计给掌上电脑(HPCs)以及嵌入式设备所使用的电脑环境。
记录曾经攻克那一点点的技术问题汇总,坚持下去 i++
(1)(1)(2)(7)(2)(1)(2)(11)(1)(3)(1)(1)(12)(2)(10)(16)(6)(1)(6)(8)(7)(5)(17)(15)(21)(9)(1)(1)(13)(1)当前位置: >
> 请问WINFORM连接数据库的有关问题
请问WINFORM连接数据库的有关问题
leajour & at
请教WINFORM连接数据库的问题你好,我在做窗体连接数据库的练习,有一个地方看不懂,请教了。namespace D1{ &
public partial class Form1 : Form &
public Form1() &
InitializeComponent(); &
private void button1_Click(object sender, EventArgs e) &
if (textBox1.Text == &&) &
MessageBox.Show(&请输入要连接的数据库名称&); &
string ConStr = &server=.;database=&+textBox1.Text.Trim()+&;uid =pwd =&; &
SqlConnection conn = new SqlConnection(ConStr); &
conn.Open(); &
if(conn.State == ConnectionState.Open) &
label2.Text = &数据库已经连接并打开&; &
MessageBox.Show(&连接数据库失败&); &
}}------------------------------问题-------------------------------------- & (1) string ConStr = &server=.;database=&+textBox1.Text.Trim()+&;uid =pwd =&; & &
& (2) SqlConnection conn = new SqlConnection(ConStr); &
& (3) conn.Open();--------------------------------------上面这三行代码我看不懂还有我的窗体做了出来后,一直显示的是连接数据库失败,请高手帮我看看代码段是不是有什么问题,叩谢了。
(1) string ConStr = &server=.;database=&+textBox1.Text.Trim()+&;uid =pwd =&;
定义字符串变量 ConStr ,并为其赋值;
其中,字符串内容——server=表示数据库服务器,database=表示数据库名,uid=表示用户ID,pwd=表示用户密码; (2) SqlConnection conn = new SqlConnection(ConStr);
创建数据库连接 SqlConnection 的实例 conn 对象; (3) conn.Open();
执行 conn 对象的打开连接方法;conn.Open() 如果执行成功,就表示您的 conn 对象已经与数据库建立连接成功了。。。
leakeylee1988 & &
& & (0)(0)1、设置连接字符串2、根据连接字符串新建一个链接3、打开新建的连接,准备读写数据库
leal402 & &
& & (0)(0)连接数据库失败是你的连接数据库的字符串有问题
lealvin & &
& & (0)(0)
string ConStr = &server=.;database=&+textBox1.Text.Trim()+&;uid =pwd =&; SqlConnection conn = new SqlConnection(ConStr); conn.Open();1、数据库连接字符串2、创建一个数据连接对象conn3、将这个数据连接打开报错,那是你串写的有问题。 string ConStr = &server=.;database='&+textBox1.Text.Trim()+&';uid=pwd =&; SqlConnection conn = new SqlConnection(ConStr); conn.Open();你的数据库名textBox1.Text.Trim()访问sa账户的密码是空的嘛??leakeyzw & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-

我要回帖

更多关于 winform label 换行 的文章

 

随机推荐