C# WinForm 使用 TabControls 时组织代码 [关闭]

问题描述 投票:0回答:1

我想知道是否有关于如何更好地组织 C# WinForm 代码而不是将所有代码放在 Form1 中的建议。

我目前正在使用该格式

#region tab1
 
//Code for tab1

#endregion

#region tab2
 
//Code for tab2

#endregion

c# tabcontrol
1个回答
0
投票

我在选项卡控件中使用表单

当控件直接放置在选项卡页上时,选项卡页的工作效果不太好。面板或其他一些容器效果最好,例如面板、GroupBox 或表单。它还会让你的代码及其可读性变得难以承受。当我使用选项卡控件时,我会停靠一个面板,并将其停靠样式设置为“填充”,然后在面板中创建一个子窗体,其 TopLevel=false 且 FormBorderStyle = FormBorderStyle.None。我将所有需要的控件放在子窗体上,这样我需要使用的任何控件都只需转到指定的窗体,这就是我保持所有选项卡控件有序的方式。对于每个选项卡页,它们应该是一个面板(子表单容器)和一个子表单。在selectedtabindex下可以加载指定面板的表单

private void TabTabControl_SelectedIndexChanged(object sender, EventArgs e) {

 //->The specified tab page being clicked
if(TabControl.TabPages[0] == TabControl.SelectedTab) {

   //-> The form to load in the panel docked within that tab page e.g. Form1
   Form1 fForm1 = new Form1 {
     
     TopLevel = false,

     Dock = DockStyle.None,

     Parent = PanPanel1 // The Panel within the tabpage (Form1's parent)

      FormBorderStyle = FormBorderStyle.None,
   };
     fForm1.Show(); 
}

您会发现使用这种方法会更容易维护每个选项卡页的控件和代码。它还将为您的计划提供更大的灵活性。对代码进行故障排除也会容易得多,因为您所要做的就是转到包含您需要使用的控件的指定表单。最好的开始方法是首先使用指定的控件设计表单,这些控件将成为所需选项卡页的控件。设计表单后,将成为该表单父级的面板使其大小等于其子表单大小,这可确保您的表单均匀地位于面板的中心,因为它们的大小相同。然后,您可以调整选项卡控件的大小,使其完全适合面板,这样选项卡页、面板及其子控件彼此紧密且均匀地贴合。 我通常分别使用相同的标签名称命名我的选项卡页、面板和表单,例如TabForm1、PanForm1Container、FrmForm1,因为最好访问标签名称而不是直接访问控件名称。如果我想访问 Form1,那么我知道选项卡页和面板标记名称也是 Form1,只需在开头按 Tab 或 Pan 即可。您还可以迭代指定表单上的控件,而不是直接处理选项卡控件。如果你想加载一个表单,你可以只调用面板而不是选项卡控件。 希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.