我需要帮助。我有winform,就像一个显示在图片上,所以我想改善下一件事,当我点击第一个按钮,右侧将显示来自另一个winform的内容,这是可能的吗?我不想使用面板。
vq8itlhq1#
为什么不动态地嵌入一个UserControl来表示当前的 * 页面 *,或者如果您想在设计时完成所有工作,那么就嵌入一个自定义的TabControl吧?显示来自另一个winform的内容你通常不会将弹出窗口嵌入到另一个窗口中,而会嵌入到控件中。否则你就必须隐藏最小化,最大化,关闭等等。
UserControl
TabControl
lh80um4z2#
MDI Form是最适合您的解决方案。用途:this.窗体边框样式=系统.窗口.窗体.窗体边框样式.无;`让您的子表单在您的项目中更漂亮!如果您希望MDI父表单自动调整子表单的大小,您可以像这样撰写程式码。代码示例:
private void Form1_Load(object sender, EventArgs e) { IsMdiContainer = true; } private void btnHotel_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.Show(); frm2.MdiParent = this; } private void btnCaffe_Click(object sender, EventArgs e) { Form3 frm3 = new Form3(); frm3.Show(); frm3.MdiParent = this; }
qlvxas9a3#
您可以使用TabControl控件-〉对于您想要显示的每个特定内容,您只需向TabControl添加一个TabPage,当选择特定的菜单选项时,只需切换到所需的TabControl页面。
myTabControl.SelectedIndex = 1; // for selecting and displaying page with index 1
要隐藏myTabControl的导航标头,请设置这些属性(在构造函数或Form_Load事件中:
myTabControl.ItemSize = new Size(0, 1); myTabControl.SizeMode = TabSizeMode.Fixed;
然后,只显示TabControl页的内容,而不显示导航标题。
0md85ypi4#
首先从设计时或运行时将其设置为this.IsMdiContainer = true;。然后在按钮的click事件处放置以下代码。
this.IsMdiContainer = true;
childForm frm = new childForm(); frm.MdiParent = this; //the current mdi parent form frm.FormBorderStyle = FormBorderStyle.None; frm.Dock = DockStyle.Fill; frm.Show();
output
fcg9iug35#
可以使用mdi(多文档界面):当您希望窗体在mainform内部启动时,请使用以下代码:
Dim hotelForm As New HotelForm() HotelForm.MdiParent = Me // Me is your parent form want to open hotelForm inside HotelForm.Show()
pprl5pva6#
所有窗体都有一个属性TopLevel,通过将该属性设置为false,就可以将该窗体作为控件处理,并将其添加到面板控件中。请参见下面的伪代码:
TopLevel
Form2 newForm = new Form2(); newForm.TopLevel = false; myPanel.Controls.Add(newForm); newForm.Show();
之后,您的主表单设计应该看起来像一个导航控件,旁边有一个停靠“Fill”的面板,然后单击任何导航按钮,创建所需的表单并将TopLevel设置为false,然后在面板上显示它
owfi6suc7#
您必须在表单中放置一个容器控件(如面板“pnlHost”),并使用它来显示您想要的任何表单
private Form _currentForme; private void ShowForm(Form frm) { _currentForme?.Close(); _currentForme = null; _currentForme = frm; _currentForme.TopLevel = false; _currentForme.TopMost = false; pnlHost.Controls.Clear(); _currentForme.FormBorderStyle = FormBorderStyle.None; pnlHost.Controls.Add(_currentForme); _currentForme.Dock = DockStyle.Fill; _currentForme.Show(); }
ldioqlga8#
我将使用MDI父级和子级。但是我想你也可以完成子应用程序,构建exe,然后从父应用程序中启动它作为一个新进程。检查here给定的解决方案。很久以前我尝试过类似的方法,它工作得很完美。
fzsnzjdm9#
将当前窗体设置为MdiParent,然后使用Datagridview显示其他窗体中的数据
9条答案
按热度按时间vq8itlhq1#
为什么不动态地嵌入一个
UserControl
来表示当前的 * 页面 *,或者如果您想在设计时完成所有工作,那么就嵌入一个自定义的TabControl
吧?显示来自另一个winform的内容
你通常不会将弹出窗口嵌入到另一个窗口中,而会嵌入到控件中。否则你就必须隐藏最小化,最大化,关闭等等。
lh80um4z2#
MDI Form是最适合您的解决方案。
用途:this.窗体边框样式=系统.窗口.窗体.窗体边框样式.无;`让您的子表单在您的项目中更漂亮!
如果您希望MDI父表单自动调整子表单的大小,您可以像这样撰写程式码。
代码示例:
qlvxas9a3#
您可以使用TabControl控件-〉对于您想要显示的每个特定内容,您只需向TabControl添加一个TabPage,当选择特定的菜单选项时,只需切换到所需的TabControl页面。
要隐藏myTabControl的导航标头,请设置这些属性(在构造函数或Form_Load事件中:
然后,只显示TabControl页的内容,而不显示导航标题。
0md85ypi4#
首先从设计时或运行时将其设置为
this.IsMdiContainer = true;
。然后在按钮的click事件处放置以下代码。
output
fcg9iug35#
可以使用mdi(多文档界面):当您希望窗体在mainform内部启动时,请使用以下代码:
pprl5pva6#
所有窗体都有一个属性
TopLevel
,通过将该属性设置为false,就可以将该窗体作为控件处理,并将其添加到面板控件中。请参见下面的伪代码:
之后,您的主表单设计应该看起来像一个导航控件,旁边有一个停靠“Fill”的面板,然后单击任何导航按钮,创建所需的表单并将
TopLevel
设置为false,然后在面板上显示它owfi6suc7#
您必须在表单中放置一个容器控件(如面板“pnlHost”),并使用它来显示您想要的任何表单
ldioqlga8#
我将使用MDI父级和子级。
但是我想你也可以完成子应用程序,构建exe,然后从父应用程序中启动它作为一个新进程。检查here给定的解决方案。很久以前我尝试过类似的方法,它工作得很完美。
fzsnzjdm9#
将当前窗体设置为MdiParent,然后使用Datagridview显示其他窗体中的数据