【问题标题】:Dynamically arrange controls to be tiled within a panel动态排列控件以平铺在面板内
【发布时间】:2012-12-05 19:45:59
【问题描述】:

我有一个显示在控件中的 3D 图像,我可以对它执行几项操作(旋转、缩放、绘制内容等...)。这个控件是 Dock 填充到一个面板和工具栏让我们控制图像操作。

我希望能够通过动态平铺图像来同时查看多张图像。所以:

  • 如果用户打开 1 张图片,它会占用 100% 的空间
  • 如果用户选择 2 张图片,它们会并排显示
  • 如果用户选择 4 图像,它们是平铺的。
  • 等等……

基本上,这可以通过 MDI 表单轻松实现,但此模块嵌套在应用程序中,因此这是不可能的。我可以通过计算大小和使用 TableLayoutPanel 手动完成所有这些操作,但我认为肯定有一些东西可以解决问题。

有什么建议吗?

注意:我使用的是 winform,并且我有 DevExpress 11

【问题讨论】:

    标签: c# winforms devexpress


    【解决方案1】:

    如果您只需要平铺,TableLayoutPanel 完全可以为您完成:

        private void btnNewImage_Click(object sender, EventArgs e)
        {
            if (imgCount == 0)
                tlp.Controls.Add(new Button { Text = "Image " + ++imgCount, Dock = DockStyle.Fill }, 0, 0);
            else
            {
                // tlp is the TableLayoutPanel which is docked as Dock.Fill
                if (tlp.RowCount == tlp.ColumnCount)
                {
                    tlp.ColumnCount++;
                    for (int i = 0; i < tlp.RowCount; i++)
                        tlp.Controls.Add(new Button { Text = "Image " + ++imgCount, Dock = DockStyle.Fill }, tlp.ColumnCount - 1, i);
                    tlp.ColumnStyles.Clear();
                    for (int i = 0; i < tlp.ColumnCount; i++)
                        tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, (float)100.0 / (float)tlp.ColumnCount));
                }
                else
                {
                    tlp.RowCount++;
                    for (int i = 0; i < tlp.ColumnCount; i++)
                        tlp.Controls.Add(new Button { Text = "Image " + ++imgCount, Dock = DockStyle.Fill }, i, tlp.RowCount - 1);
                    tlp.RowStyles.Clear();
                    for (int i = 0; i < tlp.RowCount; i++)
                        tlp.RowStyles.Add(new RowStyle(SizeType.Percent, (float)100.0 / (float)tlp.RowCount));
                }
            }
    

    您可以将new Button 替换为您的控件名称,我使用按钮作为示例控件。 此代码假定通过点击添加新按钮,应将一行或一列添加到布局中。你可以自定义它来做任何你想做的事情。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多