Поле ввода отображает сумму в долларах - PullRequest
0 голосов
/ 01 октября 2018

У меня есть кнопки numpad и текстовый блок.Теперь я хочу использовать эту цифровую клавиатуру, чтобы ввести сумму в виде долларовой суммы и отобразить ее в текстовом блоке.Например, если я нажму 1234 по порядку.Текстовый блок должен отображать 12.34.Как я могу сделать это в c #?Я читал много примеров в Интернете, но я не нашел ни одного из них, подходящего для моей ситуации.

        <Grid x:Name="Numpad">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <!--buttons Row-->
        <Button x:Name="popup_ClrBtn" Grid.Row="0" Content="Clear" FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="ClrBtn_Click"/>
        <Button x:Name="popup_AcptBtn" Grid.Row="0" Grid.Column="2" Content="Accpet" FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold"/>
        <!--Keyboard grid-->
        <!--first row of buttons-->
        <Button x:Name="btn7" Grid.Column="0" Grid.Row="1" Content="7" HorizontalAlignment="Stretch"  FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click"/>
        <Button x:Name="btn8" Grid.Column="1" Grid.Row="1" Content="8" HorizontalAlignment="Stretch"  FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click" />
        <Button x:Name="btn9" Grid.Column="2" Grid.Row="1" Content="9" HorizontalAlignment="Stretch"  FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click" />
        <!--Second row of buttons-->
        <Button x:Name="btn4" Grid.Column="0" Grid.Row="2" Content="4" HorizontalAlignment="Stretch"  FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click"/>
        <Button x:Name="btn5" Grid.Column="1" Grid.Row="2" Content="5" HorizontalAlignment="Stretch"  FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click" />
        <Button x:Name="btn6" Grid.Column="2" Grid.Row="2" Content="6" HorizontalAlignment="Stretch" FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click" />
        <!--Third row of buttons-->
        <Button x:Name="btn1" Grid.Column="0" Grid.Row="3" Content="1" HorizontalAlignment="Stretch" FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click"/>
        <Button x:Name="btn2" Grid.Column="1" Grid.Row="3" Content="2" HorizontalAlignment="Stretch"  FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold"  Click="numpad_Click" />
        <Button x:Name="btn3" Grid.Column="2" Grid.Row="3" Content="3" HorizontalAlignment="Stretch" FontFamily="Times New Roman" Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click" />
        <!--Last row of buttons-->
        <Button x:Name="btn0" Grid.Column="0" Grid.Row="4" Content="0" HorizontalAlignment="Stretch" FontFamily="Times New Roman"  Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click"/>
        <Button x:Name="btn00" Grid.Column="1" Grid.Row="4" Content="00" HorizontalAlignment="Stretch" FontFamily="Times New Roman"  Margin="2" FontSize="15" FontWeight="Bold" Click="numpad_Click" />
        <Button x:Name="CancelBtn" Grid.Column="2" Grid.Row="4" Content="Cancel" HorizontalAlignment="Stretch" FontFamily="Times New Roman"  Margin="2" FontSize="15" FontWeight="Bold" Click="CancelBtn_Click" Background="#FFF70B0B" />
        <Label x:Name="amountlbl" Grid.Row="5">Amount:</Label>
        <TextBlock x:Name="amountTb" Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="2"></TextBlock>
    </Grid>

1 Ответ

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

Добавьте TextChanged обработчик событий к вашему TextBox:

<TextBox Grid.Row="0" Margin="10" TextChanged="TextBox_TextChanged" />

и измените приведенный ниже код обработчика событий в соответствии с вашими потребностями:

private bool suppressTextChanged = false;
private void TextBox_TextChanged(Object sender, TextChangedEventArgs e)
{
    int caretIndex = textBox.CaretIndex;
    string text = textBox.Text;
    int value;
    if (int.TryParse(text, out value))
    {
        int insertPos = text.Length - 2;
        if (insertPos > 0)
        {
            text = text.Insert(insertPos, ".");

            suppressTextChanged = true;
            textBox.Text = text;
            if (caretIndex >= insertPos)
                caretIndex++;
            textBox.CaretIndex = caretIndex;
            suppressTextChanged = false;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...