none
Modificar objetos dinamicamente em windows form. RRS feed

  • Pergunta

  • Pessoal,

    Boa noite!

    Tenho a missão de desenvolver um projeto em C# para a votação via totem touch screen com os seguintes requisitos:

    - Formulário em full screen - Fiz retirando a bordas e maximizando, ficou ok;

    - Vamos utilizar como entrada de dados um cartão de proximidade USB que vai dar entrada no número do cartão, preencher um textbox e simular a tecla enter (o leitor já faz isso), no evento KeyPress do enter vou verificar se o número do cartão está habilitado para votação em um banco MySQL que vai ficar no servidor, vou usar um WebService PHP (WSDL) para isso pois tudo vai ser gravado no banco de dados central.

    Minha principal dúvida é qual a maneira mais correta de alterar a tela inicial (que teria como componentes o text box e uma animação para aproximar o cartão) para a próxima tela que teria somente dois botões grandes (um para SIM e outro para NÃO), imaginei usar groupBox com os objetos de cada tela e dando um visible false para esconder e ativando o outro setando a posição no centro da tela. Seria o modo mais correto ou indicariam outro modo (criar os objetos dinamicamente via código, etc)?

    Obrigado!

    sábado, 9 de janeiro de 2016 23:14

Respostas

  • Olá!

    Bem há diversas maneiras de fazer:

    • Você pode abrir um um formulário secundário com os botões SIM/NÃO
    • Pode usar o TabControl e no caso ter 2 tabs que você vai alterando conforme o uso, você pode ocultar os tabs, pode usar este código:
    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    public class WizardPages : TabControl {
        private bool tabsVisible;
    
        [DefaultValue(false)]
        public bool TabsVisible {
            get { return tabsVisible; }
            set {
                if (tabsVisible == value) return;
                tabsVisible = value;
                RecreateHandle();
            }
        }
    
        protected override void WndProc(ref Message m) {
            // Hide tabs by trapping the TCM_ADJUSTRECT message
            if (m.Msg == 0x1328) {
                if (!tabsVisible && !DesignMode) {
                    m.Result = (IntPtr)1;
                    return;
                }
            }
            base.WndProc(ref m);
        }
    }

    • Pode também fazer via código ocultando e mostrando objetos na tela
    • Pode usar um panel e através da scroll bar numa parte aparece uma das telas e noutra a outra com os botões, veja o exemplo: 

    Boa sorte!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!


    domingo, 10 de janeiro de 2016 00:53

Todas as Respostas

  • Olá!

    Bem há diversas maneiras de fazer:

    • Você pode abrir um um formulário secundário com os botões SIM/NÃO
    • Pode usar o TabControl e no caso ter 2 tabs que você vai alterando conforme o uso, você pode ocultar os tabs, pode usar este código:
    using System;
    using System.ComponentModel;
    using System.Windows.Forms;
    
    public class WizardPages : TabControl {
        private bool tabsVisible;
    
        [DefaultValue(false)]
        public bool TabsVisible {
            get { return tabsVisible; }
            set {
                if (tabsVisible == value) return;
                tabsVisible = value;
                RecreateHandle();
            }
        }
    
        protected override void WndProc(ref Message m) {
            // Hide tabs by trapping the TCM_ADJUSTRECT message
            if (m.Msg == 0x1328) {
                if (!tabsVisible && !DesignMode) {
                    m.Result = (IntPtr)1;
                    return;
                }
            }
            base.WndProc(ref m);
        }
    }

    • Pode também fazer via código ocultando e mostrando objetos na tela
    • Pode usar um panel e através da scroll bar numa parte aparece uma das telas e noutra a outra com os botões, veja o exemplo: 

    Boa sorte!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!


    domingo, 10 de janeiro de 2016 00:53
  • André, muito obrigado pela resposta.

    Gostei da ideia do TabControl, pelo meu entendimento ela ofereceria mais performance do que abrir um segundo form correto?

    Obrigado mais uma vez!

    edit:

    Usei esse código para ocultar as tabs e o click do botão para alterar a tab:

    private void Form1_Load(object sender, EventArgs e)
            {
                //esconde o controle de tabs
                tabControl1.Appearance = TabAppearance.FlatButtons;
                tabControl1.ItemSize = new Size(0, 1);
                tabControl1.SizeMode = TabSizeMode.Fixed;
            }

            private void button1_Click(object sender, EventArgs e)
            {
                //altera para a segunda tab
                tabControl1.SelectedIndex = 1;
            }

    Abs


    domingo, 10 de janeiro de 2016 18:23