none
Tentando Converter VB.NET para C# RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Passando por aki para pedir um auxílio a quem puder, estou tentando converter um código de VB para C# mas não estou conseguindo, a um tempo atrás achei um site que conseguia fazer essa conversão  e funcionou, mas devido a um desastre aki no meu HD, perdi uma grande parte dos meus códigos base, agora estou tentando recuperar uma parte, mas ainda não sou conhecedor dessa linguagem e não acho + o site, então... batendo cabeça de montão

    alguém ai pode dar uma força por favor.

     

     

    Public Class Form1
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Randomize()
            rndchr()
        End Sub
    
        Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
            'Se alguma tecla de A a Z for pressionada
            If e.KeyCode >= Keys.A And e.KeyCode <= Keys.Z Then
                'Se a tecla que for pressionadao for a letra que esta sendo exibida
                If e.KeyCode - Keys.A = Asc(lblchar.Text) - Asc("A") Then
                    'conta um ponto ao placar de acertos
                    Correto.Text = Int(Correto.Text + 1)
                    'senão incrementa o placar de erros
                Else
                    Errado.Text = Int(Errado.Text + 1)
                End If
                'randomiza um novo caractere
                rndchr()
            End If
        End Sub
        Private Sub rndchr()
            Dim CharCode As Integer = Math.Round(Rnd() * (Asc("Z") - Asc("A"))) + Asc("A")
            lblchar.Text = Chr(CharCode)
        End Sub
    
        Private Sub Tsec_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Tsec.Tick
            'conta quando você escrever
            tind.Text = Int(tind.Text + 1)
        End Sub
    End Class

    sexta-feira, 23 de dezembro de 2011 17:10

Respostas

  • Bom dia...

    consegui resolver

    então Andre, olhando com um pouco mais de calma, pelo breakpoint estava acusando isso...

    ...dai foi só tirar essa linha e colocar uma variavel com incremento no label e solucionou.

    Ficou assim agora:

    int contador, cont_certo, cont_errado;
    
            private void Randomizar()
            {
                int CharCode = Convert.ToInt32(Math.Round(Convert.ToDouble(VBMath.Rnd() *
                                              (Strings.Asc("Z") - Strings.Asc("A")))) + Strings.Asc("A"));
                lblchar.Text = Convert.ToString(Strings.Chr(CharCode));
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                VBMath.Randomize();
                Randomizar();
            }
    
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                 //Se alguma tecla de A a Z for pressionada
                if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z)
                {
                    //Se a tecla que for pressionadao for a letra que esta sendo exibida
                    if (e.KeyCode - Keys.A == Strings.Asc(lblchar.Text) - Strings.Asc("A"))
                    {
                        cont_certo++;
                        //conta um ponto ao placar de acertos
                        Correto.Text = cont_certo.ToString();
                    }
                    else
                    {
                        cont_errado++;
                        //senão incrementa o placar de erros
                        Errado.Text = cont_errado.ToString();
                    }
    
                    //randomiza um novo caractere
                    Randomizar();
                }
            }
    
            private void Tsec_Tick(object sender, EventArgs e)
            {
                contador++;
                tind.Text = contador.ToString();
            }

    Agradeço a atenção!!

    • Marcado como Resposta Neoshao terça-feira, 14 de fevereiro de 2012 11:00
    terça-feira, 14 de fevereiro de 2012 10:59

Todas as Respostas

  • public class Form1
    {
    	private void  // ERROR: Handles clauses are not supported in C#
    Form1_Load(System.Object sender, System.EventArgs e)
    	{
    		VBMath.Randomize();
    		rndchr();
    	}
    
    	private void  // ERROR: Handles clauses are not supported in C#
    Form1_KeyDown(System.Object sender, System.Windows.Forms.KeyEventArgs e)
    	{
    		//Se alguma tecla de A a Z for pressionada
    		if (e.KeyCode >= Keys.A & e.KeyCode <= Keys.Z) {
    			//Se a tecla que for pressionadao for a letra que esta sendo exibida
    			if (e.KeyCode - Keys.A == Strings.Asc(lblchar.Text) - Strings.Asc("A")) {
    				//conta um ponto ao placar de acertos
    				Correto.Text = Conversion.Int(Correto.Text + 1);
    			//senão incrementa o placar de erros
    			} else {
    				Errado.Text = Conversion.Int(Errado.Text + 1);
    			}
    			//randomiza um novo caractere
    			rndchr();
    		}
    	}
    	private void rndchr()
    	{
    		int CharCode = Math.Round(VBMath.Rnd() * (Strings.Asc("Z") - Strings.Asc("A"))) + Strings.Asc("A");
    		lblchar.Text = Strings.Chr(CharCode);
    	}
    
    	private void  // ERROR: Handles clauses are not supported in C#
    Tsec_Tick(System.Object sender, System.EventArgs e)
    	{
    		//conta quando você escrever
    		tind.Text = Conversion.Int(tind.Text + 1);
    	}
    }
    
    //=========================================
    //Service provided by Telerik (www.telerik.com)
    //Conversion powered by NRefactory.
    //Twitter: @telerik, @toddanglin
    //Facebook: facebook.com/telerik
    //=========================================
    
    

    http://converter.telerik.com/ 

    http://www.developerfusion.com/tools/convert/vb-to-csharp/

    sábado, 24 de dezembro de 2011 20:19
  • Bom dia pessoal !!!

    Tô de volta precisando de uma força....

    o código abaixo foi convertido de VB para C#, seguindo em partes algumas dicas que foram dadas acima, mas uma parte

    só consegui converter na base do 'testa e erra'. Bom agora é o seguinte:    O VS não reclama de código errado, quando faço ( F5 ), ele carrega tudo bonitinho, mas não está se comportando da forma correta (  ). Se alguém puder me ajudar aê, pois já olhei... e olhei... e olhei, e não consigo achar aonde está esse erro. Desde já agradeço a atenção de vocês!

    internal Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                VBMath.Randomize();
                rndchr();
            }
    
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                //Se alguma tecla de A a Z for pressionada
                if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z)
                {
                    //Se a tecla que for pressionadao for a letra que esta sendo exibida
                    if (e.KeyCode - Keys.A == Convert.ToInt32(lblchar.Text[0]) - Convert.ToInt32('A'))
                    {
                        //conta um ponto ao placar de acertos
                        Correto.Text = ((int)Math.Floor(Double.Parse(Correto.Text) + 1)).ToString();
                        //senão incrementa o placar de erros
                    }
                    else
                    {
                        Errado.Text = ((int)Math.Floor(Double.Parse(Errado.Text) + 1)).ToString();
                    }
                    //randomiza um novo caractere
                    rndchr();
                }
            }
    
            private void rndchr()
            {
                int CharCode = (int)Math.Round(Math.Round(VBMath.Rnd() * (int.Parse("Z") -
                                int.Parse("A"))) + double.Parse("A"));
    
                                lblchar.Text = CharCode.ToString();
            }
    
            private void Tsec_Tick(object sender, EventArgs e)
            {
                //conta quando você escrever
                tind.Text = Convert.ToInt32(tind.Text + 1).ToString();
            }
    
            private static Form1 _DefaultInstance;
    
            public static Form1 DefaultInstance
            {
                get
                {
                    if (_DefaultInstance == null)
                        _DefaultInstance = new Form1();
    
                    return _DefaultInstance;
                }
            }


    domingo, 12 de fevereiro de 2012 11:46
  • Prezado,

    Você poderia informar pra gente quais partes do código você teve dificuldades na hora de converter? Além disso, você já tentou colocar um breakpoint pra tentar entender qual parte da lógica nao está funcionando como esperado?


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 13 de fevereiro de 2012 11:19
    Moderador
  • Bom dia...

    consegui resolver

    então Andre, olhando com um pouco mais de calma, pelo breakpoint estava acusando isso...

    ...dai foi só tirar essa linha e colocar uma variavel com incremento no label e solucionou.

    Ficou assim agora:

    int contador, cont_certo, cont_errado;
    
            private void Randomizar()
            {
                int CharCode = Convert.ToInt32(Math.Round(Convert.ToDouble(VBMath.Rnd() *
                                              (Strings.Asc("Z") - Strings.Asc("A")))) + Strings.Asc("A"));
                lblchar.Text = Convert.ToString(Strings.Chr(CharCode));
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                VBMath.Randomize();
                Randomizar();
            }
    
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                 //Se alguma tecla de A a Z for pressionada
                if (e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z)
                {
                    //Se a tecla que for pressionadao for a letra que esta sendo exibida
                    if (e.KeyCode - Keys.A == Strings.Asc(lblchar.Text) - Strings.Asc("A"))
                    {
                        cont_certo++;
                        //conta um ponto ao placar de acertos
                        Correto.Text = cont_certo.ToString();
                    }
                    else
                    {
                        cont_errado++;
                        //senão incrementa o placar de erros
                        Errado.Text = cont_errado.ToString();
                    }
    
                    //randomiza um novo caractere
                    Randomizar();
                }
            }
    
            private void Tsec_Tick(object sender, EventArgs e)
            {
                contador++;
                tind.Text = contador.ToString();
            }

    Agradeço a atenção!!

    • Marcado como Resposta Neoshao terça-feira, 14 de fevereiro de 2012 11:00
    terça-feira, 14 de fevereiro de 2012 10:59