C# 如何组合定制的MDI文本&;MDI上的自定义MDI子文本';什么是标题栏?

C# 如何组合定制的MDI文本&;MDI上的自定义MDI子文本';什么是标题栏?,c#,winforms,C#,Winforms,我有自定义MDI父窗体和自定义子窗体,我想在MDI子窗体处于最大化状态时设置MDI窗体自身文本+MDI子窗体文本的标题。那怎么可能呢 mdi子窗体的正常状态—正常工作 在此图像中,您可以看到窗体状态为maximize,但MDI子窗体的文本未与MDI父窗体的文本一起显示。最大化MDI子窗体时,MDI容器的文本将显示为: ParentText - [ChildText] 因此,根据您的编辑,我假设您有一个CustomText属性,如下所示: private string CustomText

我有自定义MDI父窗体和自定义子窗体,我想在MDI子窗体处于最大化状态时设置MDI窗体自身文本+MDI子窗体文本的标题。那怎么可能呢

mdi子窗体的正常状态—正常工作


在此图像中,您可以看到窗体状态为maximize,但MDI子窗体的文本未与MDI父窗体的文本一起显示。

最大化MDI子窗体时,MDI容器的文本将显示为:

ParentText - [ChildText]
因此,根据您的编辑,我假设您有一个
CustomText
属性,如下所示:

private string CustomText
{
    get { return toolStripLabel1.Text; }
    set { toolStripLabel1.Text = value; }
}
它显示窗体的自定义标题栏。然后,如果您有类似于表单的标准标题栏的功能,则可以处理MDI子表单的
激活
大小更改
事件,并使用
BeginInvoke
以以下方式设置
自定义文本

private void button1_Click(object sender, EventArgs e)
{
    var f = new Form2() { Text = "Form2" };
    f.MdiParent = this;
    f.Activated += new EventHandler(f_Activated);
    f.SizeChanged += new EventHandler(f_SizeChanged);
    f.Show();
}
void f_SizeChanged(object sender, EventArgs e)
{
    this.BeginInvoke(new Action(() => { CustomText = this.Text; }));
}
void f_Activated(object sender, EventArgs e)
{
    this.BeginInvoke(new Action(() => { CustomText = this.Text; }));
}
注意

  • 用于检测MDI子项何时打开或关闭
  • 属性显示活动的MDI子级

最大化MDI子级时,MDI容器的文本将显示为:

ParentText - [ChildText]
因此,根据您的编辑,我假设您有一个
CustomText
属性,如下所示:

private string CustomText
{
    get { return toolStripLabel1.Text; }
    set { toolStripLabel1.Text = value; }
}
它显示窗体的自定义标题栏。然后,如果您有类似于表单的标准标题栏的功能,则可以处理MDI子表单的
激活
大小更改
事件,并使用
BeginInvoke
以以下方式设置
自定义文本

private void button1_Click(object sender, EventArgs e)
{
    var f = new Form2() { Text = "Form2" };
    f.MdiParent = this;
    f.Activated += new EventHandler(f_Activated);
    f.SizeChanged += new EventHandler(f_SizeChanged);
    f.Show();
}
void f_SizeChanged(object sender, EventArgs e)
{
    this.BeginInvoke(new Action(() => { CustomText = this.Text; }));
}
void f_Activated(object sender, EventArgs e)
{
    this.BeginInvoke(new Action(() => { CustomText = this.Text; }));
}
注意

  • 用于检测MDI子项何时打开或关闭
  • 属性显示活动的MDI子级

尝试表单的
大小\u更改
事件,(
Form1
是MDI父级,
TestForm
(frm)是MDI子级)


希望有帮助,

尝试表单的
Size\u Changed
事件,(
Form1
是MDI父级,
TestForm
(frm)是MDI子级)



希望有帮助,

这是针对Winforms的吗?是的,这是Winforms,它已经在用这种方式工作了?不需要做任何额外的事情。谢谢Berkay,但是MDI父窗体和MDI子窗体都是无边框的,或者我们可以说是自定义边框。1)请添加有关您需要的详细信息。此外,还应添加有关自定义MDI父窗体和子窗体的更多说明。自定义表单是什么意思?**2)**默认行为是显示
Parent+Child文本
,您还可以处理
mdichildactive
,以便在窗口未最大化的情况下处理文本。你的问题是什么?这是Winforms的吗?是的,这是winformsIt已经在用这种方式工作了?不需要做任何额外的事情。谢谢Berkay,但是MDI父窗体和MDI子窗体都是无边框的,或者我们可以说是自定义边框。1)请添加有关您需要的详细信息。此外,还应添加有关自定义MDI父窗体和子窗体的更多说明。自定义表单是什么意思?**2)**默认行为是显示
Parent+Child文本
,您还可以处理
mdichildactive
,以便在窗口未最大化的情况下处理文本。您的问题是什么?谢谢Reza Aghaei,此代码对我有用,但我希望在mdi子窗体最大化时更改文本。默认情况下,父窗体的文本+子窗体的文本将以最大化状态显示。此操作将使用自定义mdi窗体和自定义mdi子窗体执行。我在问题中提到的。所以不清楚你在问什么。默认行为是显示
Parent+Child文本
,也可以处理
mdichildactive
,以便在窗口未最大化的情况下处理文本。你的问题到底是什么?我添加了两张图片来澄清这个问题。再次查看问题。感谢Reza Aghaei,此代码对我有效,但我希望在mdi子窗体最大化时更改文本。默认情况下,父窗体的文本+子窗体的文本将以最大化状态显示。此操作使用自定义mdi窗体和自定义mdi子窗体执行。我在问题中提到的。所以不清楚你在问什么。默认行为是显示
Parent+Child文本
,也可以处理
mdichildactive
,以便在窗口未最大化的情况下处理文本。你的问题到底是什么?我添加了两张图片来澄清这个问题。再次查看问题。感谢Berkay,您的代码正常工作,但问题是frm_sizechanged事件仅发生一次(子窗体处于活动状态),但我想在mdi子窗体最大化时调用该事件。一次是什么意思?它跟踪大小的变化,并查找条件是否最大化@是的,这是工作,谢谢。我在代码上犯了一些错误。再次感谢。感谢Berkay,您的代码正常工作,但问题是frm_sizechanged事件仅发生一次(子窗体处于活动状态),但我想在mdi子窗体最大化时调用该事件。您所说的一次是什么意思?它跟踪大小的变化,并查找条件是否最大化@是的,这是工作,谢谢。我在代码上犯了一些错误。再次感谢。