m0_58844937 2024-06-10 17:12 采纳率: 94.3%
浏览 6
已结题

主窗口中有多个文本框,然后鼠标任意点击一个文本框,都可以弹出一个自定义的数字键盘窗口,然后被点击的输入框实时获取数字键盘的值,在点击键盘数字时,输入框的值不能失去焦点

主窗口中有多个文本框,然后鼠标任意点击一个文本框,都可以弹出一个自定义的数字键盘窗口,然后被点击的输入框实时获取数字键盘的值,在点击键盘数字时,输入框的值不能失去焦点

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-10 17:12
    关注

    引自免费微信小程序:皆我百晓生

    要实现这个功能,可以使用WPF(Windows Presentation Foundation)框架,因为WPF提供了丰富的图形界面设计能力和事件处理机制。下面将详细介绍如何实现这一需求。

    步骤 1: 设计用户界面

    首先,创建一个WPF应用程序。在XAML中,我们将添加多个TextBox控件,并为数字键盘创建一个UserControl。为了简化,这里只展示一个TextBox和数字键盘的示例。

    XAML 文件 (MainWindow.xaml)

    <Window x:Class="DigitalKeyboardApp.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="数字键盘示例" Height="350" Width="525">
        <Grid>
            <TextBox x:Name="txtInput" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
            <Button Content="显示数字键盘" Click="BtnShowKeyboard_Click" />
        </Grid>
    </Window>
    

    步骤 2: 创建数字键盘 UserControl

    数字键盘 XAML (NumberKeyboard.xaml)

    <UserControl x:Class="DigitalKeyboardApp.NumberKeyboard"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400">
        <Grid>
            <!-- 数字键 -->
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Button Content="1" Grid.Row="0" Click="NumButtonClick" CommandParameter="1"/>
            <Button Content="2" Grid.Row="0" Click="NumButtonClick" CommandParameter="2"/>
            <!-- 更多数字按钮... -->
        </Grid>
    </UserControl>
    

    步骤 3: 处理事件和绑定

    在后台代码中,我们需要处理按钮点击事件,并更新TextBox的值。

    C# 后台代码 (MainWindow.xaml.cs)

    using System.Windows;
    using System.Windows.Controls;
    
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    
        private void BtnShowKeyboard_Click(object sender, RoutedEventArgs e)
        {
            // 显示数字键盘,这里可以是模态或非模态窗口,取决于需求。
            NumberKeyboard keyboard = new NumberKeyboard();
            keyboard.ShowDialog();
        }
    }
    
    // 数字键盘的后台代码 (NumberKeyboard.xaml.cs)
    public partial class NumberKeyboard : UserControl
    {
        public NumberKeyboard()
        {
            InitializeComponent();
        }
    
        private void NumButtonClick(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            if (button != null)
            {
                string value = button.CommandParameter.ToString();
                // 假设 txtInput 是当前激活的 TextBox
                Application.Current.Dispatcher.Invoke(() =>
                {
                    txtInput.Text += value;
                });
            }
        }
    }
    

    注意事项

    • 确保数字键盘的NumButtonClick事件处理器正确地引用了当前聚焦的TextBox。在上面的例子中,我假设有一个全局可访问的txtInput变量,但这可能需要根据实际情况调整。
    • 考虑到TextBox的焦点管理,当数字键盘弹出时,应确保TextBox保持焦点。这可以通过在数字键盘的UserControl上设置适当的FocusManager.FocusedElement属性来实现。

    以上步骤将帮助你构建一个基本的数字键盘与多个TextBox交互的系统。你可以根据具体需求进一步定制和扩展。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 创建了问题 6月10日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀