0

我正在寻找创建一个Windows窗体。此表单用于单独显示数据组,我的目标是在同一个表单窗口中执行此操作,而不是打开多个窗口。

例如,每组数据由 Job# 定义。用户将希望一次查看 X 个不同的 Job#(范围通常为 1-5,但可能更多)。我希望每个 Job# 有 4 个 dataGridViews 以及文本框中的各种标识和汇总数据。 初始示例概念

我正在研究使用 TabPages/Tab Controls。我最初的想法是让用户单击不同的选项卡来查看他们预先选择的那些工作的数据。但是,这些选项卡的行为似乎不像我所看到的类。是否有更好的方法来解决这个问题或让选项卡像类一样工作?这样每个选项卡都有一个 Job TextBox、4 个不同的 DataGridViews 等。这样我就可以轻松创建和显示任意数量的作业?

例如,每个选项卡将有 4 个 dataGridView,可能有 8 个文本框、标准化标签和标准化布局。

那么使用标签是个好主意吗?使用其他一些 WinForm 控件?

4

2 回答 2

0

就个人而言,我更喜欢网格细节视图。我们在软件中大量使用的东西。该表单具有SplitContainer垂直对齐方式。

在顶部面板中,您添加了某种类型的列表(ListBox, ListView, DataGridView...任何可以加载列表然后对选择做出反应的控件)。

在底部面板中,您还有更多选项。简单地说,您可以使用 aTableLayoutPanel然后设置行/列来提供您喜欢的嵌入式控件的任何排列,例如用于显示数据的网格数组。我想为了与您的模型保持一致,您将拥有一个ColumnStyle和四个 (4) RowStyles。然后在每一行中,添加一个网格。

这样,您可以将所有内容保存在一个地方……一个“屏幕”,如果您愿意(无需翻阅标签)。您对列表中的选择做出反应,以决定在网格中显示哪些数据。然后,您只需要一些代码(我希望是一个类)来连接提供数据的类和显示它的表单控件(网格)。

这里的另一个好处是,通过列表演示,您可以在任何时候拥有超过五 (5) 个工作。事实上,随着滚动,你喜欢多少就多少(不限于显示进入锅之前的选项卡数量)。

此外,您将重新使用网格。只需刷新所选列表项的显示数据。如果新鲜度不是问题,您甚至可以预先加载和缓存所有内容。

如果可以的话,还可以考虑直接绑定到数据源。

于 2013-08-13T17:49:22.990 回答
0

这里至少有2个解决方案:

  1. 创建一个Panel包含您想要的所有控件的自定义 ( TextBox, DataGridView, ...),对其进行设计以使其看起来最适合您。然后将每个添加到您的Panel每个.TabPageTabControl

  2. 创建一个新的自定义TabPage并将自定义添加TabPage到您的TabControl.TabPages而不是标准的TabPage.

我认为如果您可以使用代码(而不是通过拖放)初始化所有内容,则可以完成第二种方法,因为要获得drag-n-drop支持,您可能需要编写一个自定义TabControl. 所以第一种方法是可行的,OK。您可以将 替换为PanelForm设置Form.TopLevel = false,您可以将该表单添加到任何容器控件。使用Form,您可以轻松drag-n-drop设计和组织控件。

这里有一些代码可以帮助你弄清楚:

public class TabPageClient : Form {
    public TabPageClient(){
        InitializeComponent();
        Dock = DockStyle.Fill;
        TopLevel = false;
        FormBorderStyle = FormBorderStyle.None;
    }
    //.... other code 
    //I think this is important
    //You should define some Properties and methods to control the data flowing into and out from your TabPageClient. 
    //You can also support some method to add/remove the controls dynamically.
}    

考虑到拖放要求,我认为使用UserControl可能会更好:

public class TabPageClient : UserControl {
   public TabPageClient(){
      InitializeComponent();
      Dock = DockStyle.Fill;
   }
}

对于UserControl,您应该将该类放在一个单独的 *.cs 文件中,编译您的项目,然后您可以在ToolBox窗口中看到它(在最顶部)。只需像其他控件一样拖放它。

于 2013-08-13T17:14:53.727 回答