编程论坛's Archiver

cyl_jay 发表于 2008-5-8 13:24

求助!!跨窗体标题修改问题

我新建了2个窗体:mainfrm,titlefrm,在titlefrm中有文本框tbtitle,一个按扭
我想在titlefrm的文本框tbtitle中输入一段字修改mainfrm的标题(.Text),在按扭的单击事件中
有代码:
    mainfrm mf = new mainfrm();
    mf.Text = tbtitle.Text;
但是程序运行时,点按扭根本没反应,是什么原因?

cyl_jay 发表于 2008-5-8 18:00

有谁知道啊
请指点!!!
感激不尽

梦心 发表于 2008-5-8 18:03

你应该在main窗体里面添加一个修改标题的方法,然后在另一个窗体中引用它(传参)!

blueskyss 发表于 2008-5-9 12:37

这种思路应该是有问题的,我先前也有个相似的问题
你当前的主窗体跟你new以后的窗体不是同一个
你改了也看不到,
你可以用show出来看一下效果

jacklee 发表于 2008-5-9 12:56

分清楚NEW出来的东西是一个新的实例(占用内存的)一般那样修改是不成的,要获取那个窗口的实例类才能修改才有效果。

cyl_jay 发表于 2008-5-9 15:33

就是啊~~我对这个问题的思路理解一直有问题,刚开始还以为很容易,结果做起来才感觉没那么简单
试了很多方法,最后把自己都搞晕了,能告诉我一个确切的思路吗?

snipen 发表于 2008-5-9 19:18

public static string titleName="";在titlefrm设置并赋值,在mainfrm得到这个值,要不你就用属性传值,(在mainfrm定义一个属性,在titlefrm给这个属性赋值),这样也是可行的,就跟查找替换一样,

snipen 发表于 2008-5-9 19:25

private string titleName="MainForm";
        public string TitleName
        {
            get { return this.titleName; }
            set { this.titleName = value; }
        }
        public mainfrm()
        {
            InitializeComponent();
        }

        private void mainfrm_Load(object sender, EventArgs e)
        {
            this.Text = TitleName;
        }
titlefrm
        private void button1_Click(object sender, EventArgs e)
        {
            mainfrm frm = new mainfrm();
            frm.TitleName = this.textBox1.Text;
            frm.ShowDialog();
        }
我调试了下,是可以的,

snipen 发表于 2008-5-9 19:27

public static string titleName = "";
        public titlefrm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            titleName = this.textBox1.Text;
            mainfrm frm = new mainfrm();
            frm.ShowDialog();
        }
public mainfrm()
        {
            InitializeComponent();
        }

        private void mainfrm_Load(object sender, EventArgs e)
        {
            this.Text = titlefrm.titleName;
        }
这个也是可行的,我也调试了下

cyl_jay 发表于 2008-5-10 23:05

谢谢!

cyl_jay 发表于 2008-5-11 11:07

不好意思又来打搅了.
    请问楼上的,这种方法确实可以更改mainfrm标题,但是有一个窗体重叠的问题
   因为我启动窗体所用的方法也是mainfrm.showdialog(),和modifyfrm.showdialog(),这样修改过后就同时有四个窗体 显示,然后我
   修改了modifyfrm窗体中的按纽的dialogresult属性为cancel,结果还是有这个窗体重叠问题,这怎么解决呢?

每天开心点 发表于 2008-5-11 12:38

可以把当前的隐藏了,再弹出你要的窗体.
把当前窗体隐藏的代码:
this.Hide(); // 对用户隐藏窗体

每天开心点 发表于 2008-5-11 12:40

例如:
我现在有两个窗体,Form1 和Form2.

//我在Form2写多个构造函数,带个字符串的参数.
public Form2(string title)
        {
            InitializeComponent();
            this.Text = title;
        }
然后我希望通过Form1的按纽,点击后把Form1的TextBox的值传到Form2,改Form2的标题.再把Form1隐藏.
在Form1的按纽单击事件里面写:
            Form1 f2 = new Form1(textBox1.Text);
            this.Hide();
            f2.ShowDialog();

[[it] 本帖最后由 每天开心点 于 2008-5-11 12:42 编辑 [/it]]

cyl_jay 发表于 2008-5-11 15:49

当前的修改标题窗体form2是隐藏了~~可是form1原本就存在,现在又打开了一个form1,
   在按钮单击事件中 用 form1 f2 = new form1(texbox1.text)
                        f2.hide()
                        this.hide()
                        f2.showdialog()
  这样并不能隐藏form1窗体,只能隐藏form2
  我怎样才能同时隐藏先打开的两个窗体?

cyl_jay 发表于 2008-5-25 15:56

回复 13# 每天开心点 的帖子

请问怎样才能隐藏最初打开的主窗体呢?因为子窗体是通过主窗体菜单打开的,修改了标题后
程序会有2个主窗体同时在运行.一个是修改了标题的一个是没有修改标题的

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.