Cómo parar el programa c# Auto seleccionando Windows Form Radio Button en el lanzamiento

Soy un principiante tan sólo desnuda conmigo.

Para uno de los papeles, estoy estudiando que me han encargado hacer un prototipo para un formulario de membresía de gimnasio y luego hacerlo utilizable. Ha sido una lucha hasta ahora, por decir lo menos.

Mi pregunta es actualmente estoy ejecutando un método para comprobar cuando se verifican botones de radio específicos y cuando son, para producir un valor determinado (10,00, 15.00 o 20.00). Pero cuando la aplicación comienza automáticamente selecciona 10.00 y los valores de salida no cambiarán. He descompuesto esto a la otra declaración autoseleccionando 10.00 y está emitiendo las 10.00 como se le ha dicho. Mi problema es cuando retiro la otra declaración que acabo de obtener un 0.00 en la sección de salida.

Aquí está una imagen del formulario de membresía para darle una idea del prototipo

Tenga en cuenta que actualmente estoy tratando de hacer la parte 'Tipo de membresía' de la forma, espero que una vez que pueda pasar que entonces todo lo demás debe tener un poco más de sentido. Sé que también hay una caja de texto en la sección del personal, tuve que ver si reactba de manera diferente a una etiqueta normal que no tiene.

Aquí está el código con el que estoy trabajando actualmente -

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 Membership_Formv2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            PackagePrice();
    }

    public double PackagePrice()
    {
        double BasePrice = 0;

        {

            if (radioButton5.Checked == true)
            {
                BasePrice = 10.00;


            }
            else if (radioButton6.Checked == true)
            {
                BasePrice = 15.00;
                
            }
            else if (radioButton7.Checked == true)
            {
                BasePrice = 20.00;
            }
            else
            {
                radioButton5.Checked = true;
                BasePrice = 10.00;
            };

            label41.Text = BasePrice.ToString("###0.00");

            return BasePrice;
        }


    }

    private void radioButton5_Click(object sender, EventArgs e)
    {

    }

    private void radioButton6_Click(object sender, EventArgs e)
    {

    }

    private void radioButton7_Click(object sender, EventArgs e)
    {

    }

    private void radioButton8_Click(object sender, EventArgs e)
    {

    }

    private void radioButton9_Click(object sender, EventArgs e)
    {

    }

    private void radioButton10_Click(object sender, EventArgs e)
    {

    }
}
}

Realmente apreciaría cualquier ayuda con esto.

Gracias.

Pregunta hecha hace 3 años, 5 meses, 0 días - Por algorithmwhiz


4 Respuestas:

  • No está muy claro cuál es el problema. Si no quieres que se revise radioButton5 que no escriba radioButton5.Checked = true

    Respondida el Dec 16, 2020 a las 21:20 - por quantumquill62b1

    Votos positivos: 0 | Votos negativos: 0

  • Respondida el Dec 16, 2020 a las 21:28 - por binarybrainiac

    Votos positivos: 0 | Votos negativos: 0

  • En tu código, el problema radica en la llamada al método PackagePrice() en el constructor de la clase Form1. Al llamar a este método en el constructor, estás asignando automáticamente el valor de 10.00 a BasePrice y marcando como seleccionado el radioButton5, lo cual puede causar que los valores de los radio buttons no se actualicen correctamente.

    Para solucionar esto, te recomendaría llamar al método PackagePrice() únicamente cuando se produzca un evento que cambie la selección de los radio buttons. Para ello, puedes manejar el evento CheckedChanged de los radio buttons, de la siguiente manera:

    En el constructor, eliminar la llamada al método PackagePrice():

    c

    public Form1()

    { InitializeComponent(); }

    Luego, manejar el evento CheckedChanged de los radio buttons de la siguiente manera:

    c

    private void radioButton5_CheckedChanged(object sender, EventArgs e)

    { if (radioButton5.Checked) { PackagePrice(); } } private void radioButton6_CheckedChanged(object sender, EventArgs e) { if (radioButton6.Checked) { PackagePrice(); } } private void radioButton7_CheckedChanged(object sender, EventArgs e) { if (radioButton7.Checked) { PackagePrice(); } }

    Con este cambio, el método PackagePrice() se llamará solamente cuando se produzca un cambio en la selección de los radio buttons y te permitirá obtener el valor correcto de BasePrice de acuerdo a la selección del usuario.

    Espero que esta solución te sea de ayuda. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 17, 2020 a las 21:20 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El problema en tu código es que la función PackagePrice se ejecuta solo una vez durante la inicialización del formulario, en el constructor Form1(). Esto significa que cuando seleccionas un botón de radio diferente después de que se inicia el formulario, la función PackagePrice no se vuelve a ejecutar y el valor BasePrice no se actualiza.

    Para solucionar este problema, debes llamar a la función PackagePrice cada vez que se selecciona un botón de radio. Puedes hacer esto agregando la siguiente línea al evento Click de cada botón de radio:

    
    PackagePrice();
    

    Aquí tienes el código actualizado:

    
    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 Membership_Formv2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                PackagePrice();
            }
    
            public double PackagePrice()
            {
                double BasePrice = 0;
    
                {
    
                    if (radioButton5.Checked == true)
                    {
                        BasePrice = 10.00;
    
    
                    }
                    else if (radioButton6.Checked == true)
                    {
                        BasePrice = 15.00;
    
                    }
                    else if (radioButton7.Checked == true)
                    {
                        BasePrice = 20.00;
                    }
                    else
                    {
                        BasePrice = 0.00;
                    };
    
                    label41.Text = BasePrice.ToString("0.00");
                    return BasePrice;
                }
    
    
            }
    
            private void radioButton5_Click(object sender, EventArgs e)
            {
                PackagePrice();
            }
    
            private void radioButton6_Click(object sender, EventArgs e)
            {
                PackagePrice();
            }
    
            private void radioButton7_Click(object sender, EventArgs e)
            {
                PackagePrice();
            }
    
            private void radioButton8_Click(object sender, EventArgs e)
            {
                PackagePrice();
            }
    
            private void radioButton9_Click(object sender, EventArgs e)
            {
                PackagePrice();
            }
    
            private void radioButton10_Click(object sender, EventArgs e)
            {
                PackagePrice();
            }
        }
    }
    

    Con estos cambios, la función PackagePrice se volverá a ejecutar cada vez que se seleccione un botón de radio y el valor BasePrice se actualizará en consecuencia.

    Respondida el Dec 17, 2020 a las 21:33 - por Gemini

    Votos positivos: 0 | Votos negativos: 0