Você está aqui: C# ::: Windows Forms ::: TextBox |
C# Windows Forms Avançado - Como rolar as linhas de um TextBox para cima uma de cada vez usando a API do WindowsQuantidade de visualizações: 7458 vezes |
Em algumas situações gostaríamos de rolar para cima o conteúdo de um TextBox de múltiplas linhas uma linha de cada vez. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_LINEUP para seu parâmetro wParam. O valor do parâmetro lParam é zero. Veja um trecho de código que rola para cima o conteúdo de um TextBox uma linha de cada vez. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem. Comece adicionando a linha: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System.Runtime.InteropServices; na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- [DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); Finalmente coloque o código abaixo no evento Click de um botão: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- private void button2_Click(object sender, EventArgs e){ // antes de executar este exemplo certifique-se de que // a propriedade Multiline do TextBox esteja definida // como true e a propriedade ScrollBars contenha o valor // Vertical ou Both textBox1.Multiline = true; textBox1.ScrollBars = ScrollBars.Vertical; // constante para a mensagem WM_VSCROLL const uint WM_VSCROLL = 0x115; // constante para o parâmetro wParam const int SB_LINEUP = 0; // handle para a caixa de texto IntPtr handle = textBox1.Handle; IntPtr wParam = (IntPtr)SB_LINEUP; IntPtr lParam = IntPtr.Zero; // vamos fazer com que o TextBox role uma linha para cima SendMessage(textBox1.Handle, WM_VSCROLL, wParam, lParam); } |
Link para compartilhar na Internet ou com seus amigos: |
C# ::: Namespace System.Drawing ::: Graphics |
C# Windows Forms - Como passar um objeto da classe Graphics como argumento para um método e usá-lo para desenhar na superfície do formulárioQuantidade de visualizações: 5771 vezes |
Em algumas situações gostaríamos de escrever um método que recebe um objeto da classe Graphics como argumento e usar este objeto para alguma tarefa, por exemplo, desenhar na superfície do formulário. Nesta dica eu mostro como isso é possível. Comece escrevendo o seguinte método:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // um método que recebe um objeto da classe Graphics private void desenhar(ref Graphics g){ // vamos desenhar uma linha horizontal de 300 pixels na // cor preta e espessura de 1 pixel g.DrawLine(new Pen(Color.Black, 1), new Point(20, 80), new Point(320, 80)); // vamos liberar o objeto Graphics g.Dispose(); } Note que, na definição do parâmetro do método nós usamos a palavra-chave ref. Isso foi necessário porque queremos que o objeto Graphics seja passado por referência, uma vez que o estamos liberando dentro do corpo do método com uma chamada ao método Dispose(). Veja agora como obter o objeto Graphics relacionado ao formulário atual e passá-lo ao método desenhar(): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- private void button1_Click_1(object sender, EventArgs e){ // vamos obter o objeto Graphics relacionado ao formulário atual Graphics graphics = this.CreateGraphics(); // vamos passar o objeto Graphics para o método desenhar desenhar(ref graphics); } |
C# ::: Coleções (Collections) ::: ArrayList |
Como excluir todos os elementos de uma ArrayList do C# usando o método Clear()Quantidade de visualizações: 8155 vezes |
A remoção, ou seja, a exclusão de todos os elementos de uma ArrayList do C# pode ser feita com uma chamada ao método Clear(). Veja que este método poderá lançar uma exceção NotSupportedException se a ArrayList for somente leitura ou possuir um tamanho fixo. Veja um exemplo de seu uso: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- using System; using System.Collections; namespace Estudos { class Program { static void Main(string[] args) { // Cria o ArrayList ArrayList cidades = new ArrayList(); // Adiciona nomes de cidades cidades.Add("Goiânia"); cidades.Add("Cuiabá"); cidades.Add("Fortaleza"); cidades.Add("Curitiba"); // obtém a quantidade de elementos int quant = cidades.Count; Console.Write("A lista contém {0} itens\n", quant); // vamos remover todos os elementos cidades.Clear(); // obtém a quantidade de elementos novamente quant = cidades.Count; Console.Write("A lista contém {0} itens", quant); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: A lista contém 4 itens A lista contém 0 itens Pressione uma tecla para sair... |
C# ::: Threads ::: Thread |
Como usar a classe Thread para criar threads em seus programas C#Quantidade de visualizações: 11775 vezes |
A classe Thread permite criar e controlar uma thread, além de definir sua prioridade e obter seu status. Veja a posição desta classe na hierarquia de classes da plataforma .NET:System.Object System.Runtime.ConstrainedExecution.CriticalFinalizerObject System.Threading.Thread Um processo pode criar uma ou mais threads para executar parte do código do programa associado a tal processo. Usamos um delegate ThreadStart ou um delegate ParameterizedThreadStart para especificar o código do programa que será executado pela thread. O delegate ParameterizedThreadStart nos permite passar dados para as funções a serem executadas pela thread. Durante seu ciclo de vida, uma thread está sempre em um ou mais dos estados definidos pela enumeração ThreadState. Um nível de prioridade de agendamento, como definido na enumeração ThreadPriority, pode ser requisitado para a thread, mas, este comportamento nem sempre é garantido pelo sistema operacional. O método GetHashCode() fornece identificação para threads gerenciadas. Durante o ciclo de vida de uma thread, seu código de identificação não colidirá com os códigos das demais threads, independente do domínio da aplicação a partir do qual obtemos tal valor. Veja um trecho de código no qual criamos uma thread e a agendamos para execução paralela com a thread principal da aplicação. Note como os valores dos dois laços são exibidos de forma compartilhada pelas duas threads, ou seja, um thread exibe alguns valores e pára, para permitir que a outra faça parte do seu trabalho: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- class Program{ static void Main(string[] args){ // using using System.Threading; // vamos criar uma nova instância da clase Thread // e fornecer o método que será executado Thread thread = new Thread(contar); // vamos agendar a thread para futura execução thread.Start(); // agora vamos contar na thread principal for (int i = 0; i <= 20; i++){ Console.Write("#" + Thread.CurrentThread.GetHashCode() + ": " + i + ", "); } Console.Write("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } // método que será chamado pela thread static void contar(){ for (int i = 0; i <= 20; i++){ Console.Write("#" + Thread.CurrentThread.GetHashCode() + ": " + i + ", "); } } } Aqui eu usei a sintáxe de criação de objetos da classe Thread que cria uma instância de ThreadStart nos bastidores, ou seja, forneci apenas o método a ser executado pela nova thread. Note também que uma chamada ao método Start() da thread não faz com que a thread seja executada imediatamente. Este método apenas torna a thread elegível para execução, ou seja, no estado "pronta" (Running). É o sistema operacional que determina quando a mesma será executada. |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Transporte de fluidos por bombas O objetivo no transporte de fluidos por bombas é transferir energia ao fluido, compensar as perdas por atrito e aumentar a vazão no transporte com diferença de altura ou de pressão. Suponha que escoe petróleo cru por uma tubulação horizontal com auxílio de uma bomba com eficiência de 85%. Qual potência deve ser fornecida na entrada da estação de bombeamento para vazão de 2,94m3/s? Considere que a queda de pressão estimada ao longo do escoamento é de 7,92MPa. A) 23,30MW. B) 27,41MW. C) 19,80MW. D) 85,00MW. E) 7,96MW. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
(Unifal 2008) Assinale a alternativa correta a respeito das alterações do ciclo hidrológico. A) O desmatamento provoca um aumento da evapotranspiração vegetal, desequilibrando o balanço de água no solo, que se torna estéril. B) A agricultura irrigada retira água do lençol freático, devolvendo-a ao rio, por meio do escoamento fluvial, poluída e pobre em nutrientes. C) A superexploração dos aquíferos provoca o ressecamento dos solos e contribui para o aumento da erosão fluvial. D) A compactação dos solos, que pode ser decorrente das atividades agropecuárias, reduz a infiltração da água da chuva e aumenta o escoamento superficial. E) O consumo de água urbano e industrial é responsável pela poluição das águas, mas não afeta a hidrografia local quanto à redução da vazão dos rios. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Fundações rasas Uma fundação do tipo radier é, convencionalmente, uma laje de concreto usada quando, EXCETO: A) O solo é mole, com baixa capacidade de carga. B) É necessário combater a sobrepressão hidrostática. C) Há ocorrência de bolsões de solos moles variáveis sob a projeção da estrutura. D) A sapata corrida cobre 40% acima da área de fundação por causa de cargas elevadas de pilares. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual dessas coleções Python é ordenada, mutável (permite mudanças) e permite duplicação de itens? A) Dictionary B) Tuple C) List D) Set E) Nenhuma das opções anteriores Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Como escrever um condicional if para executar uma ação se o valor de "a" for DIFERENTE de 10? A) if (a <> 10) {} B) if a <> 10: C) if a != 10 then D) if (a != 10) {} Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de C# |
Veja mais Dicas e truques de C# |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |