C#WINFORM中 如何把一个已经加载完成的窗体在重新加载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#WINFORM中 如何把一个已经加载完成的窗体在重新加载相关的知识,希望对你有一定的参考价值。

是在其他窗体执行

从Form1.Controls中删掉后再添加进去
,如果是在子窗体项重新加载父窗体,那很遗憾,必须要关掉子窗体(除非你使用进程开启子窗体),如果是在父窗体重新加载子窗体,那很简单。吧子窗体关掉,然后重新打开,或在子窗体中调用重新加载函数。
参考技术A 窗体名_Load(null,null)就可以重新加载load事件。需要那时候刷新看个人需求。
注意需要把load事件的访问权限设置为“公共”即‘public'。
参考技术B 再调用load方法
LoginForm_Load(sender, e);
参考技术C Form1 a = new Form1();
a.Show();
a = new Form1();
a.Show();
return;
多Show几次本回答被提问者和网友采纳
参考技术D 再调用load方法

winform中如何判断多久没有对窗体进行操作了?

现在要做的就是任意一个Winform窗体3分钟以上没有任何操作,就弹出一个窗体,类似于电脑屏保,有N张图片来回的切换。

有几个方法。
1. GetLastInputInfo,缺点:只能监测本进程的窗口,不能知道其他进程的情况。本窗口没有输入,不代表用户就没有输入~
2. 捕获WM_SYSCOMMAND-->SC_SCREENSAVE。这是个取巧的方法,先设置系统屏保时间为你指定的时间,然后等待该消息。缺点是系统只向顶层激活窗口发送该消息。就是说如果你不是顶层窗口、不是激活状态,系统就不给你发这个消息~

3. 低级键鼠钩子。缺点:没有明显的缺点,但是任何程序关闭窗口的时候会比正常慢一点点~
可能还有别的方法,赶着看青奥会,有空再帮你想吧~
参考技术A Form 有个 Deactivate 事件,可以在其中开始计时三分钟。 参考技术B 调用系统api:
getlastinputinfo

using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO

[MarshalAs(UnmanagedType.U4)]
public int cbSize;
[MarshalAs(UnmanagedType.U4)]
public uint dwTime;

[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
static long GetLastInputTime()

LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
if (!GetLastInputInfo(ref vLastInputInfo)) return 0;
return Environment.TickCount - (long)vLastInputInfo.dwTime;

private void Form1_Load(object sender, EventArgs e)

timer1.Enabled = true;

private void timer1_Tick(object sender, EventArgs e)

Text = string.Format("用户已经0秒没有路过了", GetLastInputTime() / 1000);


具体参考:
http://hi.baidu.com/xuejianxiyang/item/d82a94e514cad40e64db0012本回答被提问者采纳

以上是关于C#WINFORM中 如何把一个已经加载完成的窗体在重新加载的主要内容,如果未能解决你的问题,请参考以下文章

C# - Winform: 在窗体加载的过程中截获异常,如何不让窗体显示出来。

在C#的winform中,如何快速加载窗体,避免控件的背景图片闪烁?

怎么把AutoCAD嵌入到c#Winform程序的一个窗体中

如何在winform窗体加载完以后再执行某个事

怎么异步显示加载中 winform

C#winform怎样等所有控件加载完再显示窗体?C#透明窗体显示时闪现黑块怎么解决?