Jump to content


Luiz Fernando Noschang

Member Since 06/08/2009
Offline Last Active 12/08/2009, 18:17
-----

Posts I've Made

In Topic: Permissão Para Editar Arquivo

12/08/2009, 18:17

Você pode usar try catch:

try
{
try
{

// Codigo para ler o arquivo vai aqui

}
finally
{
// Executa essa operação, havendo erro ou não...
// Geralmente usado para fechar o arquivo e liberá-lo para o SO.
}

} catch (Exception e)
{

// Deu erro? A execução do programa vme pra cá.
// Aqui você pode informar o usuário sobre o erro
MessageBox.Show(this, "Ooooppppsss!!!\nErro ao abrir o arquivo XML!!", "Erro...", MessageBoxButtons.OK, MessageBoxIcons.Error);
}

:-)

In Topic: Aplicação Desktop

07/08/2009, 17:10

Se este carregamento ocorre depois que o formulario principal é exibido, você pode utilizar um backgroundworker.
Vá até a paleta de ferramentas (geralmente à esquerda) e abra a categoria "Components".
Selecione o componente BackgroundWorker e coloque no formulario.

De dois cliques nele e implemente o seu código.
Depois, você deve criar um ativador para o backgroundworker.
Pode ser um botão. Crie um botao e clique duas vezes nele. Coloque o seguinte código: backgroundWorker1.RunWorkerAsync();

IMPORTANTE: Se você tentar atualizar algum componente do formulario de dentro do background worker (atualizar uma progressbar por exemplo), será gerada uma exceão. Para este tipo de tarefa, o backgroundworker deve estar associado a um delegate. Procure por isso no MSDN, site oficial da microsoft... :-)

Espero ter ajudado...
Abraço...

PS: Uma vez iniciado o backgroundworker, ele não poderá ser interrompido até concluir a tarefa. A não ser que você o faça manualmente utilizando algumas variáveis de controle. Se quiser um exemplo, poste aqui no fórum que eu te mando um exemplo por email.

In Topic: Algoritomo Para Calcular Juros Composto

07/08/2009, 16:30

private void button1_Click(object sender, EventArgs e)
{
float c, t, n;
double m;

try { c = float.Parse(TextBoxCapital.Text); }
catch (Exception ex) { MessageBox.Show("Por favor digite um capital válido!"); return; }

try { t = float.Parse(TextBoxTaxa.Text); }
catch (Exception ex) { MessageBox.Show("Por favor digite uma taxa válida!"); return; }

try { n = float.Parse(TextBoxPeriodo.Text); }
catch (Exception ex) { MessageBox.Show("Por favor digite um período válido!"); return; }

m = c * Math.Pow((1 + t), n);

// Verifique sua fórmula, parece estar errada

MessageBox.Show("Montante: " + m.ToString());
}

private void button2_Click(object sender, EventArgs e)
{
foreach (Control control in Controls)
if (control is TextBox)
((TextBox) control).Clear();

// Limpa todos os TextBox's do form de uma só vez
}

In Topic: Object Sender

07/08/2009, 15:57

O "sender" é um objeto qualquer que tenha gerado o evento Calcular.
O "e" (EventArgs) são os argumentos passados para o evento.

Neste caso aqui, EventArgs não faz nenhuma diferença, mas por exemplo, se o evento sendo tratado fosse o movimento do mouse, então EventArgs traria a posição X, Y do mouse assim como o botão do mouse que está presisonado, Esquerdo, Direito ou do Meio.


Pelo código, creio que se trata de uma calculadora.
Você tem no form 4 botões, cada um para uma operação (soma, divisão subtração, multipllicação).

Você poderia programar separadamente um evento para cada botão.
Mas para gerar menos código fonte e ficar mais organizado, implementou-se apenas um evento, e este mesmo evento é chamado em todos os botões.

Ou seja, quando você clica no botão de soma e no botão de divisão, o código que será executado é exatamente o mesmo.
A única coisa que muda, é o objeto sender, que no caso é o botão pressionado.

Neste ponto, o algoritmo verifica se o texto do botão pressionado é "+" e faz uma soma, se for "-" faz uma subtração e assim por diante...

Você pode fazer uma brincadeira. Crie um novo botão no form. Mude o texto dele para "^".
Agora no evento Click do botão, selecione o método evento Calcular.

Depois vá até o código fonte e digite:

case "^": resultado = Math.Pow(valor1, valor2); break;

Isso vai retornar a potência entre os dois valores.

OBS: você pode associar o evento Calcular com qualquer outro tipo de controle, não precisa ser necessariamente um botão.

Espero que você tenha entendido!!!

In Topic: Dúvida Não Tão Simples

06/08/2009, 22:24

Crie uma nova aplicação!!
Adicione dois formularios.
Renomeie os arquivos para FormLogin.cs e FormPrincipal.cs.

O código do FormLogin deve ficar assim:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class FormLogin : Form
{
private bool loginValido = false;


public FormLogin()
{
InitializeComponent();
}


public bool LoginValido
{
get { return loginValido; }
}

private bool autenticaLogin()
{
// Aqui você faz a autenticação...

return (textBox1.Text == "x");
}

private void button1_Click(object sender, EventArgs e)
{
loginValido = autenticaLogin();

if (loginValido)
Close();
}
}
}


No código do FormPrincipal você faz o que quiser, é só pra teste!!!
No arquivo Program.cs você coloca o seguinte código:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

FormLogin formLogin = new FormLogin();
Application.Run(formLogin);

if (formLogin.LoginValido)
Application.Run(new FormPrincipal());

else MessageBox.Show("Login invalido!");
}
}
}

Não tenho tempo pra explicar o código aqui...
Mas funciona...
Teste e tente entender como funciona!!!

Espero ter ajudado... abraço...

IPB Skin By Virteq