Как вывести на TexBox напрямую, используя RadioButtons и CheckBoxes, не нажимая кнопки - PullRequest
0 голосов
/ 13 октября 2018

Я хочу знать, как выводить на TextBox, как только пользователь нажал на серию RadioButtons и нажал CheckBox, которые находятся внутри различных GroupBoxes на Form.

Буду признателен за любую помощь, если на этот вопрос уже был дан ответ, сообщите мне, что я его ищу, но не могу найти ничего подобного.

Образец Form макет:

enter image description here

Ответы [ 4 ]

0 голосов
/ 13 октября 2018

Я не умею гоняться за картинками и особенно за кодом, поскольку картинка никому не помогает.В любом случае, в следующий раз, пожалуйста, не делайте этого.

Во-первых, для всех ваших радио и флажков (radChocolate, radVanilla, ... radSmall, ..., chkChocoChips, ...) дважды щелкните и заполните Checkedсобытие, такое как:

private void radChocolate_CheckedChanged(object sender, EventArgs e)
{
    CalculatePrice();
}
private void radVanilla_CheckedChanged(object sender, EventArgs e)
{
    CalculatePrice();
}
// Do the same for other radio and checkboxes

Затем добавьте код CalculatePrice как таковой (цены являются произвольными):

private void CalculatePrice()
{
    decimal price = 0M;
    if (radChocolate.Checked) price += 75M;
    if (radVanilla.Checked) price += 65M;
    if (radStrawberry.Checked) price += 55M;

    if (radSmall.Checked) price += 20M;
    if (radLarge.Checked) price += 30M;

    if (chkChocoChips.Checked) price += 5M;
    if (chkCookieCandy.Checked) price += 4M;
    if (chkNuts.Checked) price += 3M;
    if (chkFreshFruits.Checked) price += 2M;

    txtPrice.Text = price.ToString("C");
}

Это будет делать то, что вы хотели.

0 голосов
/ 13 октября 2018

Вам нужно либо создать обработчик событий для каждой радиокнопки, либо создать единый обработчик событий для всех радиокнопок.Это будет зависеть от того, что вы пытаетесь достичь.Для переключателя вы хотите подписаться на событие CheckedChanged.Затем внутри этого события вы можете изменить текстовое поле.

private void radioButtonChangeText_CheckedChanged(object sender, EventArgs e)
{
    //Code here to change text box or call sub
    textBox.Text = "Hello world";
}
0 голосов
/ 13 октября 2018

Щелкните правой кнопкой мыши по радио-кнопке и перейдите в свойства, там щелкните по «событиям» (этот знак молнии).Там есть событие под названием «CheckedChanged».Дважды щелкните ячейку рядом с ней, чтобы сгенерировать метод события.он сгенерирует такой код,

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        MessageBox.Show("hi there");
    }

, что вы сможете поместить туда любую вещь, какую захотите.Предполагая, что вы хотите скрыть TextBox, вы можете сделать это там.

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        setCheckBoxValue();   
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        setCheckBoxValue();
    }

    private void setCheckBoxValue()
    {
        int finalPrice = 0;
        if (radioButton1.Checked == true)
        {
            finalPrice = finalPrice + 75;
        }
        else if (radioButton2.Checked == true)
        {
            finalPrice = finalPrice + 87;
        }

        textBox1.Text = finalPrice.ToString("C");            
    }
0 голосов
/ 13 октября 2018

На основе вашей ссылки вы можете создать один обработчик событий и связать его со всеми событиями.( Ссылка объясняет привязку)

Таким образом, каждый раз, когда любое значение изменяется в вашей форме, вызывается только одна функция.Затем проверьте значения каждого компонента, присутствующего в вашей форме, и вычислите значение вашего текстового поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...