新手问题,c#中,MDI父窗体如果操作子窗体中的对象或方法

friendljy 2010-12-30 03:51:28
一直做硬件的,这几天有时间想学习简单的上位机软件编写。
现在的问题:

Form1是父窗体,Form2是子窗体。我在Form1的菜单的按键事件中,创建并实例化了Form2。
就是下面的程序

fm一般压力表 obj一般压力表 = new fm一般压力表();
obj一般压力表.MdiParent = this;
obj一般压力表.Show();

现在,我想在其他的菜单项中,对实例化的“obj一般压力表”这个窗体进行操作。如何访问“obj一般压力表”的对象和方法?

代码太长了都不喜欢看,具体代码放到一楼,还有个小小的困惑,就是比如我按一个按键,实例化Form2,我怎么实现再按一下,不再创建新的Form2?
以前写单片机程序写惯了。我用的最笨的方法。创建了一个枚举变量。c#是不是有更简单的方法?
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
vina 2010-12-31
  • 打赏
  • 举报
回复
那就好了!lz可以结贴了!
friendljy 2010-12-31
  • 打赏
  • 举报
回复
可以了。
声明全局变量。
然后在局部进行new就行了。谢谢大家。
friendljy 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 saytoyou 的回复:]
fm一般压力表 obj一般压力表 = new fm一般压力表();
这个“obj一般压力表”变量定义不能放到菜单的响应方法里,这样是一个局部变量,该方法执行完就会销毁变量
你把变量放到Form1类里,作为类变量,其他菜单就可以访问这个实例窗体了。
[/Quote]

我也试过这样的方法。但是不知道怎么书写。
比如我在类里面写
fm一般压力表 obj一般压力表;
然后再案件中调用
obj一般压力表.show();
提示这个对象没有被实例化。

类变量应该用什么格式写?
Saytoyou 2010-12-30
  • 打赏
  • 举报
回复
fm一般压力表 obj一般压力表 = new fm一般压力表();
这个“obj一般压力表”变量定义不能放到菜单的响应方法里,这样是一个局部变量,该方法执行完就会销毁变量
你把变量放到Form1类里,作为类变量,其他菜单就可以访问这个实例窗体了。
friendljy 2010-12-30
  • 打赏
  • 举报
回复
不是很明白。
对于1楼代码//????这个位置来说,
obj一般压力表 是不存在的吧?
方法1和方法2有没有更具体的描述?
wolftop 2010-12-30
  • 打赏
  • 举报
回复
1, 你把这个窗体的对象保存下来不就能访问嘛,不行提供的静态方法来get它

2,Form2Obj.show() 和 hide方法
friendljy 2010-12-30
  • 打赏
  • 举报
回复
public partial class MDIParent : Form
{
private enum TestType
{
无测试,
一般压力表,
精密压力表,
压力变送器
}
private TestType objTestType = TestType.无测试;

private void tbb一般压力表_Click(object sender, EventArgs e)
{
if (objTestType != TestType.一般压力表)
{
objTestType = TestType.一般压力表;

fm一般压力表 obj一般压力表 = new fm一般压力表();
obj一般压力表.MdiParent = this;
obj一般压力表.Show();
}
}
private void 清空下拉框ToolStripMenuItem_Click(object sender, EventArgs e)
{
//??????????
}
}

无关的代码已经去掉。其实就是,我想在//???的地方,操作obj一般压力表这个窗体,如何实现?
新手上路,万分感谢。

111,125

社区成员

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

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

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