c#运行子窗体时异常

画了一个界面,Form1是登录窗体,Form2是父窗体,剩下的是子窗体。调试Form2的时候就出现下图的错误。这种的情况是怎么回事?该如何解决。
public static class Program {//这个是Program.cs代码
public static Form1 f1 = null; public static Form2 f2 = null; [STAThread]
public static void Main() { Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
f1 = new Form1(); f2 = new Form2(); Application.Run(f1); }
下面的是主窗体代码,通过安登录按钮打开From2父窗体
public partial class Form1 : Form { public Form1() {
InitializeComponent(); } private void button1_Click(object sender, EventArgs e) {
Program.f2.Visible = true; Program.f1.Visible = false; }
private void button2_Click(object sender, EventArgs e) { Application.Exit(); }
private void Form1_Load(object sender, EventArgs e) { }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
e.Cancel = true; this.Visible = false; } } 提示文字过长,只能这么粘了

重新编译程序,然后停止调试。

再开始调试,有程序占用你的exe追问

重新编译是重画界面吗?重启电脑之类的方法试过了,不太好用。界面不想重画

追答

估计是你的代码问题,Form2在影响Form1,Form1在影响Form2

追问

我想也是这个问题,刚才费了改了半天才把代码粘上去,麻烦您帮我看一看那个地方没写对,我是初学者,调用的地方还不是很清楚

追答

这么改:
Main() 里这么写:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

f1窗口的按钮事件里面:
Form2 f2 = new Form2();
f2.Show();
this.Visible = false;

追问

朋友,按照你说的写法报错。是不是这个的原因,这个是Form1.Designer.cs文件,Form1是登录界面,Form2是父界面,From1:From2怎么写不对吧。
namespace WindowsApplication1
{
partial class Form1 : Form2
}

追答

Form1和Form2都为各自单独的窗口,新建窗口Form1,再新建窗口Form2即可

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-14
保存重启软件,或者重启电脑追问

试过了,但是重启之后第一次点运行好使,点完Form2之后在点运行就报那个错了

c# 用 FindWindowEx 获取子窗体时 出异常
\/\/查找子窗体 [DllImport("user32.dll", EntryPoint = "FindWindow")]public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);[DllImport("user32.dll", EntryPoint = "FindWindow")]应该把EntryPoint = "FindWindow"改为EntryPoin...

c#主窗体按钮关闭子窗体时跳出异常,说子窗体中的txt文件被另一进程应用...
你要在退出子窗体前将正在使用的文件关闭。file.close(),否则会有这个异常

C# MDI子窗体无法打开
你这个没什么错,很定是别的问题:private void ShowForm(Form frm){ foreach (Form f in this.MdiChildren){ if (f.Name == frm.Name){ f.Activate();return;} } frm.MdiParent = this;frm.WindowState = FormWindowState.Maximized;frm.Show();} \/\/\/ \/\/\/ 运输单查询 \/\/\/ \/\/\/ ...

C#使用定时器导致子界面在鼠标拖动时不流畅,会一卡一卡的,如何解决...
System.Windows.Forms.Timer类是使用UI线程工作的,所以在使用该类时要注意一定不要执行耗时较多的操作。这样会导致UI失去响应,因为UI线程去做别的工作而无法对UI进行响应或渲染。解决的方案是使用线程\/线程池来进行耗时较多工作的执行操作。

C# C\/S 弹出子窗体时父窗体不能操作
因为你是在线程池调用的ShowDialog,导致调用变成异步,所以与主窗口的主线程无关,因此主窗口不会被挂起。如果你直接在主窗口中调用ShowDialog才会正确将主窗口挂起。

c#子窗体更新数据卡死
运行的数据多了。c#子窗体更新数据需要更新成千上万天数据,极易出现卡死的现象。在MDI窗体中,起到容器作用的窗体被称为“父窗体”,可以放在父窗体中的“其他窗体”被称为“子窗体”,又称为“MDI子窗体”。

C#的WinForm程序子窗口关闭后仍存在进程问题.
窗体全是主线程创建的,仍存在应该是你资源没有释放干净。如子窗体中海油线程在跑等等。

C#关闭子窗体,返回主窗体时出错
1 、你在子窗体里不需要的再public Form1 F=new Form1();来创建新的窗体。2、你在子窗体对r赋值了,你这个r在这些代码看是属于子窗体的而不是主窗体的公共变量r。3、r的值没有传递给主窗体 正写法(可参考);(1)使用静态变量 :在主窗体将r声明为静态的 如 public static string path=...

...子窗体都不会显示,运行都一直显示之前的样子
有可能隐藏到其它控件的后面了。两个控件叠加起来, 就有一个被隐藏。

C#中再次打开已打开子窗体时如何使其置前?
第一种解决方式:点击完查询弹出子窗口后就使得查询按钮不可用,关闭该查询窗口后再恢复按钮可用状态 第二种方式:借助全局变量,打开查询窗口后保存成全局变量,第二次的时候就判断是否为null,每次关闭后设置为null,然后窗口是具备设置为显示窗口的属性的(具体的不记得了你点来看一下嘛)就能置于前了 ...

相似回答