原文:C# WinForm技巧"将Form嵌入到Panel"
虽然有 TabControl控件, 但是为了减少主窗体的代码量, 可以将部分分页的功能模块放置于一个 Form 中, 当调用时, 直接把这个 Form嵌入到一个 Panel中即可.
示例如下:
要嵌入的 Form:
public partial class FormEmbed : Form
{
public FormEmbed()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Hide(); // 不能调用 Close 方法, 因为 Close 后Form被释放,就不能再次Show
}
}
主窗体中放置一个容器Panel(或者 TabControl的 TabPage):
private FormEmbed frmEmbed = new FormEmbed(); // 全局变量
public Form1()
{
InitializeComponent();
}
// 显示
private void button1_Click(object sender, EventArgs e)
{
if (frmEmbed != null)
{
frmEmbed.FormBorderStyle = FormBorderStyle.None; // 无边框
frmEmbed.TopLevel = false; // 不是最顶层窗体
panel1.Controls.Add(frmEmbed); // 添加到 Panel中
frmEmbed.Show(); // 显示
}
}
// 隐藏
private void button2_Click(object sender, EventArgs e)
{
if (frmEmbed != null)
{
frmEmbed.Hide();
}
}
分享到:
相关推荐
提供的源码文件"**C# WinForm在Panel中添加Form.txt**"和"**panel 放窗体+清空.txt**"应该包含了实现这一功能的具体代码,读者可以结合本文档的说明进行学习和实践。 总的来说,这种技术在开发复杂的桌面应用时非常...
除了直接显示在MDI父窗体上,还可以将子窗体嵌入到特定的Panel控件中。首先需要在父窗体中添加一个Panel控件,并将其名称设置为pnl1。然后将子窗体的`Parent`属性设置为该Panel。 ```csharp mySon.Parent = pnl1; /...
1.把自适应的类整体复制到你的工程命名空间里,这样做,每个窗体均可使用。 2.声明自适应类实例。 3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,首次记录窗体和其控件初始位置和大小,之后调用类的...
在C# WinForm开发中,有时我们可能需要将一个外部的.exe程序集成到我们的应用程序中,使其成为窗体的一部分,这种技术通常被称为嵌入或托管外部应用程序。这在某些场景下非常有用,例如,当我们想在自己的应用内运行...
4. **嵌入UE4窗口**:在WinForm的代码中,使用`SetParent`函数将UE4的窗口句柄设置为你WinForm的某个控件(如PictureBox或Panel)的子窗口,这样UE4的渲染视口就会显示在这个控件上。 5. **通信与交互**:为了实现...
当我们需要将Unity3D的场景或游戏嵌入到传统的Windows桌面应用中时,就涉及到“U3D.exe嵌入WinForm”的技术。这项技术可以让我们在WinForm应用中展示Unity内容,并实现两者之间的数据交互,提升用户体验和应用功能。...
- 使用Visual Studio中的WinForm设计器,添加两个Panel控件,一个用于左侧的树视图(TreeView),另一个用于右侧的文件列表视图(ListView)。这两个控件可以通过调整大小和位置来适应界面布局。 - 在TreeView中,...
本文将详细讲解如何在Winform中实现这一功能。 首先,我们需要了解Winform窗口的基本结构。一个Winform窗口是由一个名为`Form`的类创建的,该类继承自`System.Windows.Forms.Control`。在默认情况下,`Form`类会...
总结来说,实现"C# Winform 侧边栏,切换不同页面"需要掌握Windows Forms的基本控件用法,尤其是ToolStrip、MenuStrip和FlowLayoutPanel,以及如何使用Form类创建和管理子窗体。同时,理解MDI应用程序的概念也是至关...
- **子窗口嵌入**:如果你希望外部EXE窗口嵌入到WinForm中,可以利用Windows API的`CreateProcess`和`SetParent`函数,创建并设置子窗口。但这种方法较为复杂,需要处理窗口消息和同步问题。 - **通信机制**:...
1. **设置正确的父级控件**:确保WindowsFormsHost控件被正确地添加到WPF的Visual Tree中,避免直接添加到Window或Grid等控件上,而应将其添加到能正确处理Z-Order的容器控件(如Canvas或StackPanel)中。...
在C# WinForm开发中,创建具有嵌套子窗体的应用程序是一项常见的任务,这有助于构建用户界面的层次结构,...通过实现这样的项目,开发者可以提升对C# WinForm的掌握程度,同时也能锻炼到UI设计和用户体验方面的技巧。
这里,我们将子窗体的`Parent`属性设置为`splitContainer1.Panel2`,而不是设置`MdiParent`,因为子窗体不再作为MDI Child,而是直接作为SplitContainer的子控件。 2. 实现动态调整左右占比功能: 用户可以通过...
总之,【俄罗斯方块C#项目】涵盖了C#编程语言的多个方面,从基本语法到高级特性,为学习者提供了一个全面的实践平台,同时也展示了C#在游戏开发中的强大能力。通过分析和理解这个项目,不仅可以掌握C#编程,还能深入...
-128 到 127 -32,768 到 32,767 -2,147,483,648 2,147,483,647 -9,223,372,036,854,775,808 到 第1页 C#(WINFORM)学习 long val2 = 34L; 到 9,223,372,036,854,775,807 byte ushort 8 位无符号整型 16 位无符号...
- **嵌入窗体**:可以通过将新窗体的`Parent`属性设置为现有的容器控件来实现嵌入式显示。 ```csharp Form1 newForm = new Form1(); newForm.TopLevel = false; newForm.Parent = panel1; newForm.Dock = ...