【问题标题】:c# .NET - Tabpage marginc# .NET - 标签页边距
【发布时间】:2011-03-23 01:25:09
【问题描述】:

我有一个带有 3 个标签页的标签控件。我需要为第一个标签页添加左边距(因此将所有标签页向右移动 200px )。我该怎么做??

使用 Visual Studio 2008 / c#

【问题讨论】:

  • 您不能移动标签页。用面板盖住。
  • 您是否打算在运行时或设计时在标签页内添加控件?你这样做的目的究竟是什么?
  • 我在运行时添加控件。我需要一个按钮的左边距。像 Firefox 4 这样的东西。

标签: c# .net winforms visual-studio


【解决方案1】:

编辑再次阅读我认为您更多的是寻找每个页面上的控件位于选项卡的右侧,而不是移动按钮。

正如 Hans 所说,面板是最简单的方法。但这并不漂亮。

    private void Form1_Load(object sender, EventArgs e)
    {
        // Create spacer tab with a name long enough to reach the 200px mark
        TabPage spacer = new TabPage("..............................................................");
        tabControl1.TabPages.Insert(0, spacer);

        // Create a panel at the same location of the tab control.
        Panel spacerBlock = new Panel();
        spacerBlock.Name = "spacer";
        spacerBlock.Location = tabControl1.Location;
        spacerBlock.Width = 198;
        spacerBlock.Height = 20;

        this.Controls.Add(spacerBlock);

        spacerBlock.BringToFront();
    }

    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        // Ensure the user can't use the keyboard to somehow select the spacer tab.
        if (tabControl1.SelectedIndex == 0)
            tabControl1.SelectedIndex = 1;

        // Check if the second (first I guess) tab is selected and adjust the panel to keep the look consistant.
        if (tabControl1.SelectedIndex == 1)
            this.Controls["spacer"].Width = 198;
        else
            this.Controls["spacer"].Width = 200;
    }

您需要确保用户无法通过键盘快捷键选择选项卡,从而检查索引更改。

另请注意,如果由于 3d GUI 效果而选择了第二个(在您的情况下为第一个)选项卡,则必须调整面板的宽度。

老实说,考虑到最终用户的外观设置以确保间隔标签的文本和面板宽度正确的长度并不能真正弥补花哨的外观恕我直言。

我能想到的唯一其他选项是高度为 16 像素的选项卡面板。同样,这必须根据最终用户的外观设置进行调整,更不用说让它全部工作的额外开销了。

【讨论】:

    【解决方案2】:

    如果是 AjaxControlToolkit 选项卡控件,添加这个 CSS 类:

    .TabContainer .ajax__tab_header
    {
        padding-left: 200px;
    }
    

    【讨论】:

    • 对不起,我的意思是 c#.NET winform 应用程序。
    • 哎呀,对不起。在那种情况下你不能。
    【解决方案3】:

    您需要解决此问题,因为标签页无法移动。您可能想在标签页中放置一个分组框,然后您可以根据需要在分组框中添加所有控件...

    // tabPage 1
    this.tabPage1.Controls.Add(this.groupBox1);
    
    // groupBox1
    this.groupBox1.Location = new System.Drawing.Point(200,6);
    this.groupBox1.Controls.Add(this.textBox1);
    this.groupBox1.Controls.Add(this.AnyControls); //etc
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      相关资源
      最近更新 更多