Você está aqui: C# ::: Dicas & Truques ::: Mouse e Teclado |
C# Windows Forms - Como tratar eventos do mouse em suas aplicações C# Windows FormsQuantidade de visualizações: 16491 vezes |
Aplicações de interface gráfica (GUI) em C# fazem uso extensivo do mouse e qualquer classe que herde de System.Windows.Forms.Control pode receber e tratar seus eventos. Os eventos do mouse mais comuns são pressionamento (click), liberação, movimento, etc. E cada um possui suas particularidades. Sempre que um evento do mouse ocorre, as informações sobre tal evento são fornecidas ao método de tratamento de evento por meio de um objeto da classe MouseEventArgs (alguns eventos usam EventArgs) e o delegate usado para criar os gerenciadores de eventos do mouse é MouseEventHandler. Veja, por exemplo, o tratador de evento para o evento MouseClick de um Button: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- private void button1_MouseClick(object sender, MouseEventArgs e){ MessageBox.Show("Sou um Button e acabei de ser clicado!"); } A classe MouseEventArgs é muito útil, pois é ela que nos permite obter informações sobre qual botão foi pressionado, as coordenadas x e y do evento, se um duplo-clique ocorreu, etc. Veja um trecho de código no qual verificamos qual botão do mouse foi pressionado durante um evento MouseUp em um formulário: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- private void Form1_MouseUp(object sender, MouseEventArgs e){ if(e.Button == MouseButtons.Left){ MessageBox.Show("Fui clicado com o botão esquerdo!"); } else if(e.Button == MouseButtons.Right){ MessageBox.Show("Fui clicado com o botão direito!"); } else if (e.Button == MouseButtons.Middle){ MessageBox.Show("Fui clicado com o botão do meio!"); } else{ MessageBox.Show("O que está acontecendo?"); } } Veja os eventos do mouse que possuem um objeto da classe EventArgs: a) MouseEnter - Ocorre quando o cursor do mouse entra na área de um controle. b) MouseLeave - Ocorre quando o cursor do mouse deixa a área de um controle. c) Click - Ocorre quando clicamos na área de um controle. Note que um click do mouse envolve pressionar e liberar o botão do mouse. Veja os eventos do mouse que possuem um objeto da classe MouseEventArgs: a) MouseDown - Ocorre quando o botão do mouse é pressionado dentro da área de um controle. b) MouseHover - Ocorre quando o cursor do mouse pára sobre a área de um controle (sem clique, pressionamento ou movimento). c) MouseMove - Ocorre quando movimentamos o mouse na área de um controle. d) MouseUp - Ocorre quando o botão do mouse é liberado sobre a área de um controle. e) MouseClick - Ocorre quando clicamos na área de um controle. Note que um click do mouse envolve pressionar e liberar o botão do mouse. Há algumas diferenças significativas entre os eventos Click e MouseClick. Não deixe de consultar as outras dicas desta seção para aprofundar seus conhecimentos. |
![]() |
C# ::: Namespace System.Drawing ::: Image |
Como usar o método FromFile() da classe Image do C# para criar um objeto desta classe a partir de um arquivo de imagem JPG, GIF, PNG, BMP, etcQuantidade de visualizações: 7273 vezes |
Em algumas situações precisamos criar um objeto Image a partir de um arquivo de imagem JPG, GIF, PNG, BMP, etc. Isso pode ser feito por meio do método estático FromFile() da classe Image. Veja sua assinatura:public static Image FromFile(string filename) Veja um trecho de código no qual usamos o método FromFile() para criar um objeto Image a partir de uma imagem JPG em um determinado diretório. Em seguida usamos a Image construída para exibir a imagem em um PictureBox: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- private void button1_Click_1(object sender, EventArgs e){ // constrói um objeto Image a partir do endereço da image Image imagem = Image.FromFile(@"C:\estudos_csharp_wf\logo.jpg"); // atribui a imagem construída à propriedade Image pictureBox1.Image = imagem; } É importante observar que o método FromFile() pode disparar as seguintes exceções: a) OutOfMemoryException - O arquivo não contém um formato de imagem válido ou o GDI+ não suporta o formato de pixel para o arquivo. b) FileNotFoundException - O arquivo de imagem indicado não existe. Assim, é sempre uma boa idéia colocar o código acima em um bloco try..catch. Veja como isso pode ser feito: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- private void button1_Click_1(object sender, EventArgs e){ try{ // constrói um objeto Image a partir do endereço da image Image imagem = Image.FromFile(@"C:\estudos_csharp_wf\logoi.jpg"); // atribui a imagem construída à propriedade Image pictureBox1.Image = imagem; } catch (Exception ex){ MessageBox.Show("Houve um erro ao carregar a imagem: " + ex.Message.ToString()); } } Há uma sobrecarga do método FromFile() com a seguinte assinatura: public static Image FromFile(string filename, bool useEmbeddedColorManagement) |
C# ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
C# para iniciantes - Como escrever um método que possui parâmetros (e que recebe argumentos) usando a linguagem C#Quantidade de visualizações: 11400 vezes |
Parâmetros permitem que personalizemos a forma que o conjunto de instruções em um método será executado. Em C# os parâmetros de um método são separados por vírgulas e seguem a forma usual de declaração de variáveis, ou seja, o tipo de dados seguido pelo nome da variável. Veja um exemplo de método com parâmetros:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // um método que recebe dois argumentos // e não retorna nenhum valor static void escrever(String texto, int quant){ for(int i = 0; i < quant; i++){ Console.WriteLine(texto); } } static void Main(string[] args) { // efetua uma chamada ao método informando o texto e // a quantidade de vezes que ele será exibido na tela escrever("http://www.arquivodecodigos.net", 4); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } O método escrever() possui dois parâmetros: texto e quant. Note que usamos o inteiro quant como limite para um laço for, que exibe na tela o valor da variável texto a cada iteração. Observe também a forma como este método é chamado a partir do método Main() da aplicação (fornecemos dois argumentos: o texto e a quantidade de vezes que este será exibido). Por último lembre-se de que as variáveis contidas nos parâmetros dos métodos estão disponíveis para acesso somente dentro do corpo do método, ou seja, entre as chaves { e }. |
C# ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear ou mover arquivos em C# usando a função Move() da classe FileQuantidade de visualizações: 16431 vezes |
O método Move() da classe File é útil quando precisamos renomear ou mover arquivos. Este método recebe os caminhos e nomes antigo e novo do arquivo a ser renomeado ou movido de diretório. Veja um trecho de código no qual mostramos como renomear um arquivo texto (sem movê-lo para um diretório diferente): ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- static void Main(string[] args){ // não esqueça // using System.IO; // caminho e nome atual do arquivo string antigo = "C:\\estudos_csharp\\arquivo.txt"; // caminho e novo nome do arquivo string novo = "C:\\estudos_csharp\\arquivo2.txt"; // vamos renomear o arquivo File.Move(antigo, novo); Console.WriteLine("Arquivo renomeado com sucesso."); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } |
C# ::: Coleções (Collections) ::: ArrayList |
Como percorrer os elementos de uma ArrayList do C# usando o laço forQuantidade de visualizações: 13481 vezes |
Este trecho de código mostra como usar o laço da linguagem C# for para percorrer todos os elementos de uma ArrayList de inteiros. Veja como usamos o valor da variável de controle i como índice para o elemento que queremos obter durante uma determinada iteração do laço. Não se esqueça de importar o namespace System.Collections. Eis o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- using System; using System.Collections; namespace Estudos { class Program { static void Main(string[] args) { // Cria o ArrayList ArrayList lista = new ArrayList(); // Adiciona 5 inteiros lista.Add(30); lista.Add(2); lista.Add(98); lista.Add(1); lista.Add(9); // Percorre os elementos da ArrayList // usando o laço for for (int i = 0; i < lista.Count; i++) { Console.Write("{0} ", lista[i]); } Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: 30 2 98 1 9 |
C# ::: Dicas & Truques ::: Tipos de Dados |
C# para iniciantes - Como usar o tipo de dados char da linguagem C#Quantidade de visualizações: 15718 vezes |
O tipo de dados char é usado quando queremos declarar, definir e usar caracteres em nossos programas. Em C#, uma variável do tipo char armazena um caractere Unicode, que são caracteres de 16 bits usados para representar a maioria das linguagens escritas mais conhecidas no mundo. O tipo char é um apelido C# para o tipo System.Char da plataforma .NET e sua faixa de valores varia de U+0000 à U+ffff (de 0 à 65535). Variáveis do tipo char podem ser declaradas e receber valores literais de três formas. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // define uma letra char letra = 'A'; // define um valor hexadecimal equivalente à letra "A" char letra2 = '\x0041'; // define um valor Unicode equivalente à letra "A" char letra3 = '\u0041'; Há ainda a possibilidade de efetuar um cast de um valor inteiro para o tipo char. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // converte o valor 65 para um char char letra = (char)65; // exibe o resultado Console.WriteLine("A letra é: " + letra); Quando se trata de conversões implícitas, o tipo char pode ser convertido implicitamente para os tipos ushort, int, uint, long, ulong, float, double e decimal. Contudo, o caminho contrário não é possível, ou seja, nenhum outro tipo de dados pode ser convertido para o tipo char sem a necessidade de um cast (conversão explícita). Para finalizar, veja um trecho de código que exibe o alfabeto completo em letras maiúsculas: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- static void Main(string[] args){ for(int i = 65; i <= 90; i++){ char letra = (char)i; Console.Write(letra + " "); } // pausa o programa Console.ReadKey(); } |
C# ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como pesquisar um valor em um array C# usando o método Find() e um PredicateQuantidade de visualizações: 12915 vezes |
Nesta dica veremos como usar o método Find() da classe Array e um método Predicate para pesquisar um item em um vetor de string na linguagem C#. Note que a função Predicate é fornecida como segundo argumento para o método Find(). Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- using System; namespace Estudos { class Program { static void Main(string[] args) { // cria e inicializa um array de strings string[] cidades = {"Goiânia", "São Paulo", "Rio de Janeiro", "Curitiba"}; // pesquisa o valor "Goiânia" string item = Array.Find(cidades, pesquisar); Console.WriteLine(item != null ? "Item encontrado" : "Item não encontrado."); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } // método auxiliar que serve como Predicate para localizar // o valor desejado private static bool pesquisar(String cid) { return (cid.Equals("Goiânia") ? true : false); } } } Ao executar este código C# nós teremos o seguinte resultado: Item encontrado |
C# ::: Dicas & Truques ::: Sistema |
Como obter a quantidade de processadores na máquina atual usando a propriedade ProcessorCount da classe Environment do C#Quantidade de visualizações: 9654 vezes |
Nesta dica eu mostrarei como é possível usar a propriedade ProcessorCount da classe Environment para obter e retornar um inteiro contendo a quantidade de processadores na máquina atual. Veja o código C# completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- using System; namespace Estudos{ class Program{ static void Main(string[] args) { int proc = Environment.ProcessorCount; Console.WriteLine("Esta máquina possui: " + proc + " processador(s)."); Console.ReadKey(); } } } Ao executar este código nós teremos o seguinte resultado: Esta máquina possui: 4 processador(s). |
C# ::: Dicas & Truques ::: Mouse e Teclado |
Como desenhar em um formulário C# usando o mouse - Código-fonte completoQuantidade de visualizações: 10294 vezes |
Quando estamos estudando os eventos do mouse, a primeira idéia que vem à cabeça é como usar tais eventos para escrever um programa de desenho. O código abaixo mostra como isso pode ser feito. Aqui nós usamos três eventos do mouse: MouseDown (ocorre quando o botão do mouse está pressionado), MouseUp (ocorre quando o botão do mouse é liberado) e MouseMove (ocorre quando movimentamos o mouse na superfície de um componente). Dessa forma, quando o botão do mouse é pressionado nós ativamos uma variável indicando que o movimento do mouse pode vir acompanhado de um desenho. Quando o botão do mouse é liberado nós definimos o valor desta variável como false. Isso faz com que o desenho só seja realizado se movermos o mouse com o botão pressionado. Veja o código: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace EstudosWindowForms { public partial class Form1 : Form { // indica se podemos ou não desenhar no formulário bool pintar = false; public Form1() { InitializeComponent(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { // podemos iniciar o desenho pintar = true; } private void Form1_MouseUp(object sender, MouseEventArgs e) { // vamos parar de desenhar pintar = false; } private void Form1_MouseMove(object sender, MouseEventArgs e) { // vamos desenhar? if (pintar) { // o botão do mouse está pressionado // vamos desenhar um círculo na posição atual do mouse Graphics g = CreateGraphics(); g.FillEllipse(new SolidBrush(Color.Maroon), e.X, e.Y, 5, 5); g.Dispose(); } } } } |
Vamos testar seus conhecimentos em |
Madeiras Com o avanço tecnológico, a construção civil tem se beneficiado significativamente com o desenvolvimento de diversos tipos de madeiras que oferecem soluções cada vez mais eficientes e sustentáveis. Essa evolução permitiu a criação de materiais que atendem às demandas específicas dos projetos, garantindo alta resistência, durabilidade e versatilidade. Em relação aos tipos de madeiras, considere V para verdadeiro e F para falso: ( ) A madeira serrada é o produto resultante do corte longitudinal de toras ou toretes de árvores por uma serra. ( ) A madeira reconstituída é composta por várias camadas finas de madeira sobrepostas e coladas em direções alternadas. ( ) A madeira compensada é produzida a partir do processamento da madeira natural em fibras, partículas ou lâminas, que são, então, reunidas e prensadas. Assinale a alternativa que apresenta a sequência correta. A) F, F e F. B) F, F e V. C) F, V e V. D) V, F e F. E) V, V e F. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Vantagens e Desvantagens do Concreto Armado A escolha do sistema estrutural a ser adotado para a edificação a ser executada em determinada região passa pelo estudo da viabilidade técnica e, na sequência, da viabilidade econômica. A viabilidade técnica irá considerar, entre outros itens, as vantagens e desvantagens dos sistemas em análise. Com relação às desvantagens da utilização do concreto armado, analise as afirmações a seguir e indique V para a(s) verdadeira(s) e F para a(s) falsa(s): ( ) A necessidade da utilização de um sistema de formas e escoramentos é uma desvantagem das estruturas de concreto armado que pode ser evitada pela utilização de elementos pré-moldados. ( ) O fato de o concreto produzido não atingir a resistência prevista em projeto é uma desvantagem que não pode ser evitada. ( ) A fissuração de elementos de concreto armado é uma desvantagem inevitável e não pode ser controlada. ( ) Seu elevado peso próprio é uma das principais desvantagens no concreto armado, pois esse fato pode ser penalizante na execução. Assinale a alternativa que contém a sequência correta. A) V - V - F - F. B) F - V - F - V. C) F - V - F - F. D) V - F - F - F. E) F - V - V - F. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Cálculo de vigas-parede As armaduras das vigas-parede sofrem variação a depender da região de aplicação das cargas, se em sua face superior ou em sua face superior. A área de aço longitudinal (tração) necessária calculada, considerando aço CA-50, para uma viga-parede biapoiada com vão de 3,8m, altura de 2,0m, espessura de 15cm e sujeita a carga distribuída aplicada em sua face superior de 40kN/m é: A) 1,58cm2. B) 1,64cm2. C) 1,97cm2. D) 2,11cm2. E) 2,35cm2. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Topografia |
Rumo e azimute Prova de Engenharia Civil Prefeitura de Jarú O azimute correspondente ao rumo 32º 20' 30'' é: A) 212º 20' 30'' B) 147º 39' 30'' C) 327º 39' 30'' D) 302º 20' 30'' E) 58º 40' 30'' Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Água Fria: Sistemas de distribuição Tendo em vista a função a que se destina, a tubulação de uma instalação predial de abastecimento de água fria recebe nomes distintos ao longo do trajeto da água: sub-ramais, ramais, barriletes e colunas de distribuição. Ramal é: A) A ligação final com a peça de utilização. B) A ligação entre a coluna de distribuição e os ramais. C) A tubulação que se origina nos reservatórios. D) A ligação entre as colunas de distribuição e os sub-ramais. E) Ligação entre o barrilete e os pontos de utilização. 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 |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |