在winform中Form1.Hide():实现不了

伯牙绝弦 2011-10-18 09:45:12
代码为:
private void button1_Click(object sender, EventArgs e)
{
Form1.Hide();
Form2 frr = new Form2();
frr.ShowDialog();
}
代码在Form1类中,生成解决方案为错误非静态的字段、方法或属性“System.Windows.Forms.Control.Hide()”要求对象引用 求解答,如何解决,是因为在Form1类中不能用Hide,只能实例化之后才能用么
自己改了一下代码
private void button1_Click(object sender, EventArgs e)
{
Form1 fr = new Form1();
fr.Hide();
Form2 frr = new Form2();
frr.ShowDialog();
}
解决方案无错误,但是调试结果关闭不了Form1窗体,只是打开Form2,Form1并没有关闭
...全文
610 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
伯牙绝弦 2011-10-18
  • 打赏
  • 举报
回复
谢谢各位大大的解答,我明白了,thank you
伯牙绝弦 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 findcaiyzh 的回复:]
private void button1_Click(object sender, EventArgs e)
{
Form1 fr = new Form1();
fr.Hide();
Form2 frr = new Form2();
frr.ShowDialog();
}

这里面新建了个Form,隐藏,和你当前的窗口完全没有关系。
[/Quote]
之前我也是这么想的,但是刚开始搞混了类与对象
Arnuonly 2011-10-18
  • 打赏
  • 举报
回复
把你的form1.hide() 改成 this.hide 就行了。

不过记得要在
form2.showdialog();
的后面记得
this.show();
不然你就弄不回来你的窗口了。
伯牙绝弦 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiaoyu821120 的回复:]
你Form1都没有生成对象,当然不能hide,除非你hide方法是静态方法。错误提示已经说的很清楚了。LZ对于类名和对象理解有问题。
[/Quote]
噢,知道,经你提醒我明白了,我是新手,非计算机专业,只是工程上需要用C#做点东西
Daqing 2011-10-18
  • 打赏
  • 举报
回复
肯定不可以用new实现form.hide,那就是新对象了。用this可行
宝_爸 2011-10-18
  • 打赏
  • 举报
回复
private void button1_Click(object sender, EventArgs e)
{
Form1 fr = new Form1();
fr.Hide();
Form2 frr = new Form2();
frr.ShowDialog();
}

这里面新建了个Form,隐藏,和你当前的窗口完全没有关系。
xiaoyu821120 2011-10-18
  • 打赏
  • 举报
回复
你Form1都没有生成对象,当然不能hide,除非你hide方法是静态方法。错误提示已经说的很清楚了。LZ对于类名和对象理解有问题。
宝_爸 2011-10-18
  • 打赏
  • 举报
回复
Form1是类名,而不是实例变量

private void button1_Click(object sender, EventArgs e)
{
Hide();
Form2 frr = new Form2();
frr.ShowDialog();
}
伯牙绝弦 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hudenq 的回复:]
private void button1_Click(object sender, EventArgs e)
{
Form2 frr = new Form2();//要先Show后Hide()
frr.ShowDialog();

Form1 fr = new Form1();
fr.Hide();
}
[/Quote]
这个貌似不是问题的关键吧,跟顺序没关系,求达人解答啊
萧炎 2011-10-18
  • 打赏
  • 举报
回复

private void button1_Click(object sender, EventArgs e)
{
Form2 frr = new Form2();
frr.ShowDialog();
this.Hide();
}

伯牙绝弦 2011-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qin_0 的回复:]
本来就没有关闭啊,close才是关闭吧?
[/Quote]
要是用的Close话就整个程序都关闭了,hide只是隐藏
hudenq 2011-10-18
  • 打赏
  • 举报
回复
private void button1_Click(object sender, EventArgs e)
{
Form2 frr = new Form2();//要先Show后Hide()
frr.ShowDialog();

Form1 fr = new Form1();
fr.Hide();
}
qin_0 2011-10-18
  • 打赏
  • 举报
回复
本来就没有关闭啊,close才是关闭吧?

111,094

社区成员

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

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

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