none
Definir tamanho do titulo das pages? RRS feed

  • Pergunta

  • Como posso definir o um tamanho dos títulos das pages do TabControl e aumentar também ?

    Tenho um navegador e quando acesso determinado site a page cresce com o titulo da pagina.

    Definindo o tamanho do titulo das pages ficaria tudo padrão e não ocuparia tanto espaço!!!

    Quando passar o mouse encima de determinada page ela mostraria o titulo da page inteira!!!

    Conto com a ajuda de vocês,

    Obrigado. 

    _______________________________________________________________________________________________

    Att, Gustavo Marchesini

    _______________________________________________________________________________________________


    sábado, 12 de julho de 2014 15:10

Respostas

  • É só executar o código do Load toda vez que uma nova aba for aberta. E sim, está definido para quando o usuário passar o mouse sobre a página, ele mostrar o texto real.

    Fiz algumas modificações no código, e declarei o evento do TabControl para ajustar as abas toda vez que uma nova aba for adicionada.

    private void Form1_Load(object sender, EventArgs e)
            {
                updateTabControl();
    
                tabControl1.ControlAdded += tabControl1_ControlAdded;
            }
    
            private void tabControl1_ControlAdded(object sender, ControlEventArgs e)
            {
                updateTabControl();
            }
    
            private void updateTabControl()
            {
                tabControl1.ShowToolTips = true;
    
                foreach (TabPage tabPage in this.tabControl1.TabPages)
                {
                    if (tabPage.ToolTipText == String.Empty)
                        tabPage.ToolTipText = tabPage.Text;
    
                    tabPage.Text = limitarTamanhoTexto(tabPage.Text);
                }
            }
    
            private String limitarTamanhoTexto(String titulo)
            {
                Font arialBold = new Font("Arial", 12.0F);
                Size textSize = TextRenderer.MeasureText(titulo, arialBold);
    
                bool ajustado = textSize.Width > 150;
    
                while(textSize.Width > 150)
                {
                    titulo = titulo.Substring(0, titulo.Length - 1);
                    textSize = TextRenderer.MeasureText(titulo, arialBold);
                }
    
                if (ajustado)
                    titulo += "...";
    
                return titulo;
            }

    segunda-feira, 14 de julho de 2014 14:09

Todas as Respostas

  • Ja tentou o ItemSize?

    http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.itemsize%28v=vs.110%29.aspx


    Se a resposta foi útil marcar 'como resposta'.

    domingo, 13 de julho de 2014 20:27
  • Da para limitar o texto, para ele não passar de um certo tamanho.

    Segue o código abaixo...

            private void Form1_Load(object sender, EventArgs e)
            {
                tabControl1.ShowToolTips = true;
    
                foreach(TabPage tabPage in this.tabControl1.TabPages)
                {
                    tabPage.ToolTipText = tabPage.Text;
                    tabPage.Text = limitarTamanhoTexto(tabPage.Text);
                }
            }
    
            private String limitarTamanhoTexto(String titulo)
            {
                Font arialBold = new Font("Arial", 12.0F);
                Size textSize = TextRenderer.MeasureText(titulo, arialBold);
    
                bool ajustado = textSize.Width > 150;
    
                while(textSize.Width > 150)
                {
                    titulo = titulo.Substring(0, titulo.Length - 1);
                    textSize = TextRenderer.MeasureText(titulo, arialBold);
                }
    
                if (ajustado)
                    titulo += "...";
    
                return titulo;
            }


    Nesse caso, todo o titulo que ultrapassar o Witdh de 150, definido por essas linhas

                bool ajustado = textSize.Width > 150;
    
                while(textSize.Width > 150)

    irão ser ajustados até o tamanho fixo de 150.

    • Editado lleitecs segunda-feira, 14 de julho de 2014 12:50
    segunda-feira, 14 de julho de 2014 12:49
  • Obs: O usuário que tiver usando o web browser pode navegar em varias  TabPages do TabControl, levando o código que diminui o titulo em uma  TabPages.

    Sé for aberto dez  TabPages todos os títulos serão diminuídos com esse código ?

    E um jeito pra quando o usuário colocar o mouse sobre determinada  TabPage mostre o titulo inteiro?

    Agradeço.

    Obrigado.



    segunda-feira, 14 de julho de 2014 13:00
  • É só executar o código do Load toda vez que uma nova aba for aberta. E sim, está definido para quando o usuário passar o mouse sobre a página, ele mostrar o texto real.

    Fiz algumas modificações no código, e declarei o evento do TabControl para ajustar as abas toda vez que uma nova aba for adicionada.

    private void Form1_Load(object sender, EventArgs e)
            {
                updateTabControl();
    
                tabControl1.ControlAdded += tabControl1_ControlAdded;
            }
    
            private void tabControl1_ControlAdded(object sender, ControlEventArgs e)
            {
                updateTabControl();
            }
    
            private void updateTabControl()
            {
                tabControl1.ShowToolTips = true;
    
                foreach (TabPage tabPage in this.tabControl1.TabPages)
                {
                    if (tabPage.ToolTipText == String.Empty)
                        tabPage.ToolTipText = tabPage.Text;
    
                    tabPage.Text = limitarTamanhoTexto(tabPage.Text);
                }
            }
    
            private String limitarTamanhoTexto(String titulo)
            {
                Font arialBold = new Font("Arial", 12.0F);
                Size textSize = TextRenderer.MeasureText(titulo, arialBold);
    
                bool ajustado = textSize.Width > 150;
    
                while(textSize.Width > 150)
                {
                    titulo = titulo.Substring(0, titulo.Length - 1);
                    textSize = TextRenderer.MeasureText(titulo, arialBold);
                }
    
                if (ajustado)
                    titulo += "...";
    
                return titulo;
            }

    segunda-feira, 14 de julho de 2014 14:09