Winform如何弹出窗体不是在最前面

mychinabc 2011-11-04 11:14:03
每次弹出新窗体系统都自动的选中当前窗口,如果像QQ和Tips一样只是弹出窗体显示信息,而不变成当前窗口?
不知道怎么描述,就是像QQ登录后有新闻弹在右下角的一样这种。
...全文
722 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
北京的雾霾天 2011-11-16
  • 打赏
  • 举报
回复
在窗体代码里加入如下的代码:

protected override bool ShowWithoutActivation
{
get
{
return true;
}
}
zhzhzhchch 2011-11-16
  • 打赏
  • 举报
回复
让新show出来的窗体失去焦点
Daqing 2011-11-16
  • 打赏
  • 举报
回复
this.focus();
白鸽 2011-11-16
  • 打赏
  • 举报
回复
要开独立线程来实现!要不你弹出的窗体肯定要和你的主窗体占用主线程,这样自然会挡住你的主窗体了,
幽冥雨丝 2011-11-16
  • 打赏
  • 举报
回复
show之后把焦点放在当前窗口,设置弹出窗口的位置在右下角就行了
铜臂阿铁木 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 hbxtlhx 的回复:]

在窗体代码里加入如下的代码:

protected override bool ShowWithoutActivation
{
get
{
return true;
}
}
[/Quote]

正解 正解
allen0118 2011-11-16
  • 打赏
  • 举报
回复
这个仿照QQ做的局域网聊天程序里面的,收到信息后在右下角弹出一个小框框提示用户收到信息:

private void ShowNotifyIcon(int ShowClass, string title, string content)
{
if (title == "") title = "新消息";
CustomUIControls.TaskbarNotifier taskbarNotifier = new TaskbarNotifier();
switch (ShowClass)
{
case 1:
taskbarNotifier.SetBackgroundBitmap(new Bitmap(GetType(), "skin.bmp"), Color.FromArgb(255, 0, 255));
taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(), "close.bmp"), Color.FromArgb(255, 0, 255), new Point(127, 8));
taskbarNotifier.TitleRectangle = new Rectangle(40, 9, 70, 25);
taskbarNotifier.ContentRectangle = new Rectangle(8, 41, 133, 68);
//taskbarNotifier1.TitleClick+=new EventHandler(TitleClick);
//taskbarNotifier1.ContentClick+=new EventHandler(ContentClick);
//taskbarNotifier1.CloseClick+=new EventHandler(CloseClick);
break;
case 2:
taskbarNotifier.SetBackgroundBitmap(new Bitmap(GetType(), "skin2.bmp"), Color.FromArgb(255, 0, 255));
taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(), "close2.bmp"), Color.FromArgb(255, 0, 255), new Point(300, 74));
taskbarNotifier.TitleRectangle = new Rectangle(123, 80, 176, 16);
taskbarNotifier.ContentRectangle = new Rectangle(116, 97, 197, 22);
//taskbarNotifier2.TitleClick+=new EventHandler(TitleClick);
//taskbarNotifier2.ContentClick+=new EventHandler(ContentClick);
//taskbarNotifier2.CloseClick+=new EventHandler(CloseClick);
break;
case 3:
taskbarNotifier.SetBackgroundBitmap(new Bitmap(GetType(), "skin3.bmp"), Color.FromArgb(255, 0, 255));
//taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(), "close.bmp"), Color.FromArgb(255, 0, 255), new Point(280, 57));
taskbarNotifier.SetCloseBitmap(new Bitmap(GetType(), "close.bmp"), Color.FromArgb(255, 0, 255), new Point(272, 42));
taskbarNotifier.TitleRectangle = new Rectangle(150, 57, 125, 28);
taskbarNotifier.ContentRectangle = new Rectangle(75, 92, 215, 55);
break;
}
taskbarNotifier.Show(title, content, 500, 3000, 500);
}
feng_3630 2011-11-16
  • 打赏
  • 举报
回复
设置窗体的TopLevel=false
小志 2011-11-16
  • 打赏
  • 举报
回复
用API函数:
[DllImport("user32.dll")]
public static extern Boolean ShowWindow(IntPtr hWnd, Int32 nCmdShow);//显示窗口
调用:
Form1 f = new Form1();
ShowWindow(f.Handle,4);
jshi123 2011-11-16
  • 打赏
  • 举报
回复

private const int SW_SHOWNOACTIVATE = 4;
private const int HWND_TOPMOST = -1;
private const uint SWP_NOACTIVATE = 0x0010;

[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
static extern bool SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

static void ShowInactiveTopmost(Form frm)
{
ShowWindow(frm.Handle, SW_SHOWNOACTIVATE);
SetWindowPos(frm.Handle, HWND_TOPMOST, frm.Left, frm.Top, frm.Width, frm.Height, SWP_NOACTIVATE);
}

xiaoid 2011-11-16
  • 打赏
  • 举报
回复

12楼的答案是正确的.
ijwsoft 2011-11-16
  • 打赏
  • 举报
回复
form1.Show();
form1.BringToFront();
q198708wyp 2011-11-14
  • 打赏
  • 举报
回复
我有弹出消息的例子,跟QQ差不多 弹出五秒不动自动消失 ,而且还有锁定的功能 邮箱留下 我发你 楼主
阿非 2011-11-14
  • 打赏
  • 举报
回复
show 之后 设置焦点在本窗口
mychinabc 2011-11-14
  • 打赏
  • 举报
回复
顶下,有其它方法不?
mabaolin 2011-11-04
  • 打赏
  • 举报
回复
new出以后,焦点放到别处。不能showdialog
javabegin 2011-11-04
  • 打赏
  • 举报
回复
弹出窗口不要ShowDialog,只是Show。
bdmh 2011-11-04
  • 打赏
  • 举报
回复
还可以设置topmost属性
如此 2011-11-04
  • 打赏
  • 举报
回复

Form2 f2 = new Form2();
f2.Show();
this.Focus();
//在form2中通过设置 this.StartPosition属性决定窗体的起始位置.
没法下载,到这里折腾一把试试。 本文由abc2253130贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 型、接口类型、委托类型和数组类型。 变量的类型声明 变量的类型声明 每个变量必须预先声明其类型。如 int a; int b = 100; float j = 4.5; string s1; 用 object 可以表示所有的类型。 预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例 object o = null; 范围 string sbyte short int long string s = "hello"; sbyte val = 12; short val = 12; int val = 12; long val1 = 12; -128 到 127 -32,768 到 32,767 -2,147,483,648 2,147,483,647 -9,223,372,036,854,775,808 到 第1页 C#(WINFORM)学习 long val2 = 34L; 到 9,223,372,036,854,775,807 byte ushort 8 位无符号整型 16 位无符号整型 byte val1 = 12; ushort val1 = 12; uint val1 = 12; uint 32 位无符号整型 uint val2 = 34U; ulong val1 = 12; ulong val2 = 34U; ulong 64 位无符号整型 ulong val3 = 56L; ulong val4 = 78UL; float 单精度浮点型 float val = 1.23F;7 位 double val1 = 1.23; double 双精度浮点型 double val2 = ±5.0 × 10?324 ±1.7 × 10 308 0 到 255 0 到 65,535 0 到 4,294,967,295 0 到 18,446,744,073,709,551,615 ±1.5 × 10?45 ±3.4 × 10 38 到 到 4.56D;15-16 布尔型;bool 值或为 真或为假 字符类型;char 值是 一个 Unicode 字符 精确的小数类型, 具有 28 个有效数字 bool val1 = true; bool val2 = false; char val = 'h'; decimal val = bool char decimal DateTime ±1.0 × 10?28 ±7.9 × 10 28 到 1.23M;28-29 变量转换 简单转换: float f = 100.1234f; 可以用括号转换: short s = (short)f 也可以利用 Convert 方法来转换: string s1; s1=Convert.ToString(a); MessageBox.Show(s1); 常用 Convert 方法有: 第2页 C#(WINFORM)学习 C# Convert.ToBoolean Convert.ToByte Convert.ToChar Convert.ToDateTime Convert.ToDecimal Convert.ToDouble Convert.ToInt16 Convert.ToInt32 Convert.ToInt64 Convert.ToSByte Convert.ToSingle Convert.ToString Convert.ToUInt16 Convert.ToUInt32 Convert.ToUInt64 备注 Math 类 常用科学计算方法: C# Math.Abs Math.Sqrt Math.Ro
安装及使用须知 1、查看建模图 本文件夹中的Model目录下包含了系统的数据库模型图和系统建模图,分别使用PowerDesigner和Rational Rose打开。 2、数据库安装 本安装说明是以Microsoft SQL Server 2000中文企业版为例来阐述的,对于Microsoft SQL Server其他版本,应用程序数据库的安装方法是类似的。 将本文件夹中的DataBase目录下的两个文件StudentManage.MDF和StudentManage_Log.LDF复制到系统盘的 \Program Files\Microsoft SQL Server\MSSQL\Data目录下。打开SQL Server Enterprise Manager,展开Microsoft SQL Servers树状菜单,右击“数据库”子项,在弹出菜单的“所有任务”中选择“附加数据库”命令,按提示给出 \Program Files\Microsoft SQL Server\MSSQL\Data 目录下的StudentManage.MDF的路径。 3、本程序开发时连接的数据库服务器时本地(local)且可以Windows集成安全方式访问。 4、如果用户安装的是Microsoft Visual Studio .NET 2003,那么可以直接打开StudentManage文件夹下的项目,查看代码并进行调试。 5、本程序没有设置登录窗口,读者可以参照前面的例子自行开发。 6、为了保证示例代码正确运行,读者需要自己下载和安装Dundas作图插件。下载地址如下: http://www.dundas.com/products/index.aspx?Section=Products&Body=Downloads.htm 以上软件是需要注册才能长期正常使用的软件,请大家支持正版软件的使用。

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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