none
Error CS0019 /_El operador '&' no se puede aplicar a operandos del tipo 'string' y 'string' RRS feed

  • Pregunta

  • Necesito ayuda para solucionar este problema con el & en C# Windows Forms...

    Quise trascribir un código de VB a C#...

    pero llego en un punto donde no sé como convertir lo demas por el &  ...

    aquí el los dos códigos(1er código-VB , 2do código# )

            

    Public Class Form1

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            CheckBox1.Enabled = False
            CheckBox2.Enabled = False
            CheckBox3.Enabled = False
            ComboBox2.Enabled = False
            ComboBox3.Enabled = False
            ComboBox4.Enabled = False
            Button1.Enabled = False
            Button2.Enabled = False
            Button3.Enabled = False
            Button4.Enabled = False
        End Sub

        Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
            Select Case ComboBox1.SelectedIndex
                Case 0
                    Button1.BackColor = Color.Black
                Case 1
                    TextBox1.Text = "1"
                    Button1.BackColor = Color.Maroon
                Case 2
                    TextBox1.Text = "2"
                    Button1.BackColor = Color.Red
                Case 3
                    TextBox1.Text = "3"
                    Button1.BackColor = Color.Orange
                Case 4
                    TextBox1.Text = "4"
                    Button1.BackColor = Color.Yellow
                Case 5
                    TextBox1.Text = "5"
                    Button1.BackColor = Color.Green
                Case 6
                    TextBox1.Text = "6"
                    Button1.BackColor = Color.Blue
                Case 7
                    TextBox1.Text = "7"
                    Button1.BackColor = Color.Violet
                Case 8
                    TextBox1.Text = "8"
                    Button1.BackColor = Color.Gray
                Case 9
                    TextBox1.Text = "9"
                    Button1.BackColor = Color.White
            End Select
            ComboBox1.Enabled = False
            ComboBox2.Enabled = True
            ComboBox2.Focus()
        End Sub



        Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
            Select Case ComboBox2.SelectedIndex
                Case 0
                    Button2.BackColor = Color.Black
                Case 1
                    TextBox1.Text += "1"
                    Button2.BackColor = Color.Maroon
                Case 2
                    TextBox1.Text += "2"
                    Button2.BackColor = Color.Red
                Case 3
                    TextBox1.Text += "3"
                    Button2.BackColor = Color.Orange
                Case 4
                    TextBox1.Text += "4"
                    Button2.BackColor = Color.Yellow
                Case 5
                    TextBox1.Text += "5"
                    Button2.BackColor = Color.Green
                Case 6
                    TextBox1.Text += "6"
                    Button2.BackColor = Color.Blue
                Case 7
                    TextBox1.Text += "7"
                    Button2.BackColor = Color.Violet
                Case 8
                    TextBox1.Text += "8"
                    Button2.BackColor = Color.Gray
                Case 9
                    TextBox1.Text += "9"
                    Button2.BackColor = Color.White

            End Select
            ComboBox2.Enabled = False
            ComboBox3.Enabled = True
            ComboBox3.Focus()
        End Sub

        Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            ComboBox1.Enabled = True
            ComboBox1.ResetText()
            ComboBox2.Enabled = True
            ComboBox2.ResetText()
            ComboBox3.Enabled = True
            ComboBox3.ResetText()
            ComboBox4.Enabled = True
            ComboBox4.ResetText()
            TextBox1.Text = ""
            TextBox2.Text = ""
            TextBox3.Text = ""
            TextBox4.Text = ""
            Button1.BackColor = Nothing
            Button2.BackColor = Nothing
            Button3.BackColor = Nothing
            Button4.BackColor = Nothing
            CheckBox1.Checked = False
            CheckBox2.Checked = False
            CheckBox3.Checked = False

        End Sub

        Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox3.SelectedIndexChanged
            Select Case ComboBox3.SelectedIndex
                Case 0
                    Button3.BackColor = Color.Black
                Case 1
                    TextBox1.Text += "0"
                    Button3.BackColor = Color.Maroon
                Case 2
                    TextBox1.Text += "00"
                    Button3.BackColor = Color.Red
                Case 3
                    TextBox1.Text += "000"
                    Button3.BackColor = Color.Orange
                Case 4
                    TextBox1.Text += "0000"
                    Button3.BackColor = Color.Yellow
                Case 5
                    TextBox1.Text += "00000"
                    Button3.BackColor = Color.Green
                Case 6
                    TextBox1.Text += "000000"
                    Button3.BackColor = Color.Blue
                Case 7
                    TextBox1.Text += "0000000"
                    Button3.BackColor = Color.Violet
                Case 8
                    TextBox1.Text = TextBox1.Text * 0.1
                    Button3.BackColor = Color.Gray
                Case 9
                    TextBox1.Text = TextBox1.Text * 0.01
                    Button3.BackColor = Color.White

            End Select
            ComboBox3.Enabled = False
            ComboBox4.Enabled = True
        End Sub

        Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox4.SelectedIndexChanged
            Select Case ComboBox4.SelectedIndex
                Case 0
                    Button4.BackColor = Color.Red
                    TextBox1.Text = " " & TextBox1.Text & " +- " & TextBox1.Text * 2 / 100 & "Ω"
                Case 1
                    Button4.BackColor = Color.Gold
                    TextBox1.Text = " " & TextBox1.Text & " +- " & TextBox1.Text * 5 / 100 & "Ω"
                Case 2
                    Button4.BackColor = Color.Silver
                    TextBox1.Text = " " & TextBox1.Text & " +- " & TextBox1.Text * 10 / 100 & "Ω"
            End Select
            ComboBox4.Enabled = False
            ComboBox1.Enabled = True
            ComboBox2.Enabled = True
            ComboBox3.Enabled = True
        End Sub

    -------------------------------------------------------------------------------------------------------------------------------------

    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 Calculadora_Digital_Key
    {
        public partial class Calculadora_de_código_de_colores_de_resistencias_de_4_bandas : Form
        {
            public Calculadora_de_código_de_colores_de_resistencias_de_4_bandas()
            {
                InitializeComponent();
            }

            private void btnAtras_Click(object sender, EventArgs e)
            {
                Hide();
                Form btnAtras = new Form1();
                btnAtras.Show();
            }

            private void Calculadora_de_código_de_colores_de_resistencias_de_4_bandas_Load(object sender, EventArgs e)
            {
             CheckBox1.Enabled = false;
             CheckBox2.Enabled = false;
             ComboBox2.Enabled = false;
             ComboBox3.Enabled = false;
             ComboBox4.Enabled = false;
             Button1.Enabled = false;
             Button2.Enabled = false;
             Button3.Enabled = false;
             Button4.Enabled = false;
             

            }

            private void btncAlcular_Click(object sender, EventArgs e)
            {
                
            }
            
            

            private void cbTolerancia_SelectedIndexChanged(object sender, EventArgs e)
            {
                
            }

            private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                switch (ComboBox1.SelectedIndex)
                {
                    case 0://1
                        Button1.BackColor = Color.Black;
                        break;
                    case 1://2
                        TextBox1.Text = "1";
                    Button1.BackColor = Color.Maroon;
                        break;
                    case 2://3
                        TextBox1.Text = "2";
                        Button1.BackColor = Color.Red;
                        break;
                    case 3://4
                        TextBox1.Text = "3";
                    Button1.BackColor = Color.Orange;
                        break;
                    case 4://5
                        TextBox1.Text = "4";
                        Button1.BackColor = Color.Yellow;
                        break;
                    case 5://6
                        TextBox1.Text = "5";
                    Button1.BackColor = Color.Green;
                        break;
                    case 6://7
                        TextBox1.Text = "6";
                        Button1.BackColor = Color.Blue;
                        break;
                    case 7://8
                        TextBox1.Text = "7";
                    Button1.BackColor = Color.Violet;
                        break;
                    case 8://9
                        TextBox1.Text += "8";
                        Button1.BackColor = Color.Gray;
                        break;
                    case 9://10
                        TextBox1.Text = "9";
                    Button1.BackColor = Color.White;
                        break;
                        
                }
                ComboBox1.Enabled = false;
                ComboBox2.Enabled = true;
                ComboBox2.Focus();
            }

            private void ComboBox2_SelectedIndexChanged(object sender, EventArgs e)
            {
                switch (ComboBox2.SelectedIndex)
                {
                    case 0://1
                        Button2.BackColor = Color.Black;
                        break;
                    case 1://2
                        TextBox1.Text += "1";
                        Button2.BackColor = Color.Maroon;
                        break;
                    case 2://3
                        TextBox1.Text += "2";
                        Button2.BackColor = Color.Red;
                        break;
                    case 3://4
                        TextBox1.Text += "3";
                        Button2.BackColor = Color.Orange;
                        break;
                    case 4://5
                        TextBox1.Text += "4";
                        Button2.BackColor = Color.Yellow;
                        break;
                    case 5://6
                        TextBox1.Text += "5";
                        Button2.BackColor = Color.Green;
                        break;
                    case 6://7
                        TextBox1.Text += "6";
                        Button2.BackColor = Color.Blue;
                        break;
                    case 7://8
                        TextBox1.Text += "7";
                    Button2.BackColor = Color.Violet;
                        break;
                    case 8://9
                        TextBox1.Text += "8";
                        Button2.BackColor = Color.Gray;
                        break;
                    case 9://10
                        TextBox1.Text = "9";
                        Button2.BackColor = Color.White;
                        break;
                }
                 ComboBox2.Enabled = false;
                 ComboBox3.Enabled = true;
                 ComboBox3.Focus();
            }

            private void Button5_Click(object sender, EventArgs e)
            {
                
              
            }

            private void ComboBox3_SelectedIndexChanged(object sender, EventArgs e)
            {
                switch (ComboBox3.SelectedIndex)
                {
                    case 0://1
                        Button3.BackColor = Color.Black;
                        break;
                    case 1://2
                        TextBox1.Text += "0";
                        Button3.BackColor = Color.Maroon;
                        break;
                    case 2://3
                        TextBox1.Text += "00";
                        Button3.BackColor = Color.Red;
                        break;
                    case 3://4
                        TextBox1.Text += "000";
                        Button3.BackColor = Color.Orange;
                        break;
                    case 4://5
                        TextBox1.Text += "0000";
                        Button3.BackColor = Color.Yellow;
                        break;
                    case 5://6
                        TextBox1.Text += "00000";
                        Button3.BackColor = Color.Green;
                        break;
                    case 6://7
                        TextBox1.Text += "000000";
                        Button3.BackColor = Color.Blue;
                        break;
                    case 7://8
                        TextBox1.Text += "0000000";
                        Button3.BackColor = Color.Violet;
                        break;
                    case 8://9
                        TextBox1.Text = Convert.ToString (Convert.ToDouble(TextBox1.Text) * 0.1);
                        Button3.BackColor = Color.Gray;
                        break;
                    case 9://10
                        TextBox1.Text = Convert.ToString(Convert.ToDouble(TextBox1.Text) * 0.01);
                        Button3.BackColor = Color.White;
                        break;
                }
                ComboBox4.Enabled = false;
                ComboBox1.Enabled = true;
                ComboBox2.Enabled = true;
                ComboBox3.Enabled = true;
            }

            private void ComboBox4_SelectedIndexChanged(object sender, EventArgs e)
            {
                switch (ComboBox4.SelectedIndex)
                {

                    case 0://1
                        Button4.BackColor = Color.Red;
                        TextBox1.Text = " " & TextBox1.Text & " +- " & TextBox1.Text * 2 / 100 & "Ω"; // problema 1
                        break;
                    case 1://2
                        Button4.BackColor = Color.Gold
                    TextBox1.Text = " " & TextBox1.Text & " +- " & TextBox1.Text * 5 / 100 & "Ω";// problema 2
                        break;
                    case 2://3
                        Button4.BackColor = Color.Silver;
                        TextBox1.Text = " " & TextBox1.Text & " +- " & TextBox1.Text * 10 / 100 & "Ω";// problema 3
           
                        break;


    • Editado Maicor SM jueves, 20 de febrero de 2020 5:13
    jueves, 20 de febrero de 2020 5:06

Respuestas

  • Hola, revisa tu último método private void ComboBox4_SelectedIndexChanged(object sender, EventArgs e)

    En C# el operador & sirve para realizar una operación lógica AND. En VB sirve para concatenar cadenas. Cambia los & de ese método por un +


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta Maicor SM jueves, 20 de febrero de 2020 8:03
    jueves, 20 de febrero de 2020 6:25
    Moderador
  • Como ya te han dicho, el operador & sirve para concatenar cadenas en VB, mientras que en C# se usa el operador + para realizar dicha concatenación.

    PERO: No te bastará con hacer ese cambio.

    En VB, y mientras no esté activado el Option Strict On (que aparentemente en ese programa no lo está), se realizan conversiones automáticas de tipo, por lo que puedes mezclar en una misma sentencia cadenas de texto y operaciones numéricas, y VB hace automáticamente las conversiones necesarias. En C# eso no funciona. C# es estricto en cuanto a tipos, y necesitas meter explícitamente las conversiones de tipo. Así que no puedes hacer cosas como esta: TextBox1.Text * 10 / 100  porque TextBox.Text es un string y un string no se puede multiplicar por un número.

    También hay ciertos efectos no evidentes que debes tener en cuenta. Por ejemplo, en VB 10/100 es 0.1. En C#, 10/100 es cero (necesitas escribir 10.0/100 si quieres una división en coma flotante, de lo contrario hace una división entera).

    Así que traducir este programa va a ser un poco más complicado de lo que pensabas. Es necesario entender las operaciones que se hacen y meter las conversiones necesarias en C#, no basta con solo copiar la sentencia exactamente igual y simplemente cambiar los operadores.

    • Marcado como respuesta Maicor SM jueves, 20 de febrero de 2020 8:03
    jueves, 20 de febrero de 2020 7:10

Todas las respuestas

  • Hola, revisa tu último método private void ComboBox4_SelectedIndexChanged(object sender, EventArgs e)

    En C# el operador & sirve para realizar una operación lógica AND. En VB sirve para concatenar cadenas. Cambia los & de ese método por un +


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta Maicor SM jueves, 20 de febrero de 2020 8:03
    jueves, 20 de febrero de 2020 6:25
    Moderador
  • Como ya te han dicho, el operador & sirve para concatenar cadenas en VB, mientras que en C# se usa el operador + para realizar dicha concatenación.

    PERO: No te bastará con hacer ese cambio.

    En VB, y mientras no esté activado el Option Strict On (que aparentemente en ese programa no lo está), se realizan conversiones automáticas de tipo, por lo que puedes mezclar en una misma sentencia cadenas de texto y operaciones numéricas, y VB hace automáticamente las conversiones necesarias. En C# eso no funciona. C# es estricto en cuanto a tipos, y necesitas meter explícitamente las conversiones de tipo. Así que no puedes hacer cosas como esta: TextBox1.Text * 10 / 100  porque TextBox.Text es un string y un string no se puede multiplicar por un número.

    También hay ciertos efectos no evidentes que debes tener en cuenta. Por ejemplo, en VB 10/100 es 0.1. En C#, 10/100 es cero (necesitas escribir 10.0/100 si quieres una división en coma flotante, de lo contrario hace una división entera).

    Así que traducir este programa va a ser un poco más complicado de lo que pensabas. Es necesario entender las operaciones que se hacen y meter las conversiones necesarias en C#, no basta con solo copiar la sentencia exactamente igual y simplemente cambiar los operadores.

    • Marcado como respuesta Maicor SM jueves, 20 de febrero de 2020 8:03
    jueves, 20 de febrero de 2020 7:10