winform如何让动态创建的tabPage优先显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform如何让动态创建的tabPage优先显示相关的知识,希望对你有一定的参考价值。
每创建一个tabPage都优先显示出来
参考技术A 刚刚说的集合A还记得吗,让集合A中的tab和tabpage中的tab顺序保持一致,加入现在集合A中有三个元素a,b,c,tabpage中显示的真实顺序也是a,b,c(如果不是的话,就想办法让集合A中的元素顺序保持和tabpage中的一致),1.点击tree中的d节点,首先和集合A中元素对比,发现没有重复项,则向A中添加d,并且向tabpage中添加新tab,最后选中集合A中元素为d的索引放在tabpage中执行tabpage.Select(3)(因为集合A中元素顺序和tabpage中tab顺序一致)
1.点击集合中已存在的tree节点b,循环集合A时发现b已存在,记录下b的索引放在tabpage中执行tabpage.Select(1)本回答被提问者采纳
我怎样才能使 WinForms TabPage 标题宽度适合它的标题?
【中文标题】我怎样才能使 WinForms TabPage 标题宽度适合它的标题?【英文标题】:How can i make WinForms TabPage header width fit it's title? 【发布时间】:2011-10-08 09:08:12 【问题描述】:如何使 WinForms TabPage 标题宽度适合其标题? 这是问题所在。
【问题讨论】:
【参考方案1】:谢谢,汉斯。 我没有创建类就使用了你的代码
//InitializeComponent
this.tabPresentations.HandleCreated += new System.EventHandler(TabControl_HandleCreated);
void TabControl_HandleCreated(object sender, System.EventArgs e)
// Send TCM_SETMINTABWIDTH
SendMessage((sender as TabControl).Handle, 0x1300 + 49, IntPtr.Zero, (IntPtr)4);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
【讨论】:
【参考方案2】:您需要测量字体。
试试这样的:
Dim tabPage As New TabPage
Dim width As Integer = 0
Dim valueToMeasure As String = <Your title Here>
Dim g As Graphics = tabPage.CreateGraphics()
width = CType(g.MeasureString(valueToMeasure, tabPage.Font).Width, Integer)
可能会为填充添加一个额外的机器人(宽度 = 宽度 +10)
已编辑:
<tab>.width = GetTabWidth(<Title>)
Private Function GetTabWidth (Byval title as String) as Integer
Dim widthValue as Integer = 10 'Padding (Optional)
Dim tabPage as New tabPage
Dim g as Graphics = tabPage.CreateGraphics()
widthValue += Ctype(g.measureString(title, tabPage.Font).Width, Integer)
Return widthValue
End Function
【讨论】:
好的,我测过了,接下来呢? TabPage 没有宽度属性。 对不起,我习惯了氪星导航器!试试...本机 Windows 选项卡控件允许覆盖默认的最小选项卡宽度。遗憾的是,该功能并未在 TabControl 包装类中公开。不过这是可以解决的。向您的项目添加一个新类并粘贴如下所示的代码。编译。将新控件从工具箱顶部拖放到表单上。
using System;
using System.Windows.Forms;
class MyTabControl : TabControl
protected override void OnHandleCreated(EventArgs e)
base.OnHandleCreated(e);
// Send TCM_SETMINTABWIDTH
SendMessage(this.Handle, 0x1300 + 49, IntPtr.Zero, (IntPtr)10);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
【讨论】:
以上是关于winform如何让动态创建的tabPage优先显示的主要内容,如果未能解决你的问题,请参考以下文章
我怎样才能使 WinForms TabPage 标题宽度适合它的标题?
C# winform- 选择卡问题 : 想要通过单击Tabpage A 中的按钮实现 转换到Tabpage B 中,请问如何实现?
Winform中选项卡问题 me是初学者,想问一下如何点击按钮,实现Tabpage A和Tabpage B之间的转换?