@idgarik05

Как сделать так чтобы выбор в RadioButton влиял на изменение формулы?

Здравствуйте, у меня есть приложение, формата WPF. В нем у меня есть два TextBox'а которые принимают значения для формулы и три RadioButton'а, которые должны менять функцию в формуле. Например, если пользователь выбирает sh(x), то в формуле f(x) должна меняться на выбранный параметр и так далее. Поэтому мне нужно понять как это сделать.
Код разметки окошка:
<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="150"/>
            <RowDefinition/>
            <RowDefinition Height="60"/>
        </Grid.RowDefinitions>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="30"/>
                <RowDefinition Height="30"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <StackPanel Grid.Row="0" Orientation="Horizontal">
                <Label Content="X = "/>
                <TextBox x:Name="Pole_X" Height="15" Width="200"/>
            </StackPanel>
            <StackPanel Grid.Row="1" Orientation="Horizontal">
                <Label Content="Y = "/>
                <TextBox x:Name="Pole_Y" Height="15"  Width="200"/>
            </StackPanel>
            <StackPanel Grid.Row="2" VerticalAlignment="Center">
                <RadioButton GroupName="Function" x:Name="func_shx" Content="sh(x)" Margin="5" Checked="func_shx_Checked"/>
                <RadioButton GroupName="Function" x:Name="func_x2" Content="x^2" Margin="5" Checked="func_x2_Checked"/>
                <RadioButton GroupName="Function" x:Name="func_ex" Content="e^x" Margin="5" Checked="func_ex_Checked"/>
            </StackPanel>
        </Grid>
        <StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
            <Label Content="Результат выполнения программы:"/>
            <TextBox x:Name="Pole_result" Width="300" Height="175" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" IsReadOnly="True"/>
        </StackPanel>

        <Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            
            <StackPanel Grid.Column="0" Orientation="Horizontal" HorizontalAlignment="Center">
                <Button x:Name="Btn_Start" Click="Btn_Start_Click"  Grid.Row="2" Width="100" Height="30" Content="Пуск"/>
            </StackPanel>

            <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Center">
                <Button x:Name="Btn_Delete" Click="Btn_Delete_Click"  Grid.Row="2" Width="100" Height="30" Content="Очистить"/>
            </StackPanel>
        </Grid>
        
    </Grid>


Код Xaml.cs кнопки Пуск:
private void Btn_Start_Click(object sender, RoutedEventArgs e)
        {
            double x = double.Parse(Pole_X.Text);
            Pole_result.Text += Environment.NewLine + "При X = " + x.ToString();
            double y = double.Parse(Pole_Y.Text);
            Pole_result.Text += Environment.NewLine + "При Y = " + y.ToString();


            double u;
            
            if(func_x2.Checked)
            if (x * y > 0)
            {
                u = Math.Pow(Math.Pow(x, 2) + y, 2) - Math.Sqrt(Math.Pow(x, 2) * y);
                Pole_result.Text += Environment.NewLine + "A (XY > 0) = " + u.ToString();
            } 
            else if (x * y < 0)
            {
                u = Math.Pow(Math.Pow(x, 2) + y, 2) + Math.Sqrt(Math.Abs(Math.Pow(x, 2) * y));
                Pole_result.Text += Environment.NewLine + "A (XY < 0) = " + u.ToString();
            }
            else if (x * y == 0)
            {
                u = Math.Pow(Math.Pow(x, 2) + y, 2) + 1;
                Pole_result.Text += Environment.NewLine + "A (XY = 0) = " + u.ToString();
            }
        }

Заранее спасибо за помощь
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы