Jump to content

C# - Como criar um vector de eventos :S


MostWanted12345
 Share

Recommended Posts

Antes de mais nada boa tarde..

É assim, eu estou a tentar fazer aqui um programa em que tenho vários botões e que essencialmente todos eles fazem os mesmo.. mas eu estava a pensar se não era possível simplificar as coisas na forma de por tudo num vector e depois num ciclo for..

Muito basicamente o que eu tenho é:

#region"Strings"

public string dir = @"..\..\Files\";
string[] file = new string[2];

public string file[0] = dir + "fich0.exe";
public string file[1] = dir + "fich1.exe";

#endregion

private void but0_Click(object sender, EventArgs e)
{
       try{
       System.Diagnostics.Process.Start(file[0]);
       }
       catch {}
}

private void but1_Click(object sender, EventArgs e)
{
       try{
       System.Diagnostics.Process.Start(file[1]);
       }
       catch {}
}

Por enquanto tudo bem, mas o objectivo e do tipo, fazer quase 100 botões, e estar a fazer isto 100 vezes é um bocado exagerado.

Por isso eu estou a pedir ajuda se não há nenhuma maneira de fazer isso mas +- desta forma:

#region"Strings"

public string dir = @"..\..\Files\";
string[] file = new string[2];

public string file[0] = dir + "fich0.exe";
public string file[1] = dir + "fich1.exe";

#endregion
for(int x = 0; x<=1; x++)
{
       private void but[x]_Click(object sender, EventArgs e)
       {
       try{
              System.Diagnostics.Process.Start(file[x]);
       }
       catch {}
       }
}

Desde já obrigado  😉

Link to comment
Share on other sites

Crias um evento, como os que tens aí, apenas um.

Em todos os botões preenches o evento click com o nome do método que acabaste de criar.

Preenches a propriedade Tag de todos os botões com o nome do ficheiro que queres abrir.

E metes este código dentro do método:

Button b = sender as Button;
if (b != null) Process.Start((string)b.Tag);

Depois é só acertares o que queres que o método faça para além disso.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

hmm.. atao mas não há a possibilidade de criar tp um ciclo para todos os botoes, de maneira a que nao tivesse que repetir o mesmo codigo tp 100 vezes.. ??

for(int x = 0; x<=1; x++)
{
       private void but[x]_Click(object sender, EventArgs e)
       {
       try{
              System.Diagnostics.Process.Start(file[x]);
       }
       catch {}
       }
}

tp uma maneira de no "private void nomedobutao_Click"  desse que o nome do butao fosse um array assim ja dava para fazer um ciclo.. :/

desculpa se nao me estou a fazer entender, mas obrigado mais uma vez pelo tempo que tiraste para me ajudar =)

Link to comment
Share on other sites

Acho que não percebeste bem a ideia do que te disse.

Só precisas de escrever o código uma vez.

Crias o método: Botao_Click(object sender, ...)

Em todos os teus botões metes no evento Click: Botao_Click

e na propriedade Tag: ficheiro1, ficheiro2, ficheiro3, ... um ficheiro por cada botão.

Todos os teus botões vão accionar o mesmo evento.

dentro do evento, metes o código que escrevi anteriormente.

Se ainda precisares de fazer um for, seria apenas para afectar o click com o metodo Botão_Click e a Tag com ficheiro + i.

Matraquilhos para Android.

Gratuito na Play Store.

https://play.google.com/store/apps/details?id=pt.bca.matraquilhos

Link to comment
Share on other sites

MEU!  😁

OBRIGADAO! *.*!! =D  😉😛

já percebi 😛

aserio obrigado mesmo simplificas te me a vida! epah! OBRIGADO! xD 😄

só mais uma coisa .. na tag.. ha alguma maneira de la meter uma variavel.. por exemplo, em vez de estar a meter

"..\..\Files\fich1.exe" meter "dir + fich1.exe" e o dir é uma string com o resto la dentro..

Obrigado mais uma vez!! =D

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.