当前位置: 首页 > news >正文

wpf 自定义输入ip地址的文本框 - 详解

xmal

PS:因为是上位机,所以文本框里面写了键盘,如果不需要可删除。

cs

using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace 项目
{
///
/// IPTextBox.xaml 的交互逻辑
///
public partial class IPTextBox : UserControl
{
public IPTextBox()
{
InitializeComponent();
}
///
/// 按下按键键前,判断哪些能输入
/// 只能输入数字 删除键 回车键 返回键 Tab键 左右方向键
/// 删除键、左右方向键 控制光标位置
///
private void TbxIP1_PreviewKeyDown(object sender, KeyEventArgs e)
{
Key key = e.Key;
if (sender is not TextBox tbx || tbx == null) { return; }
if ((key >= Key.D0 && key = Key.NumPad0 && key
/// 释放按键前,判断光标要做什么操作
///
private void TbxIP1_PreviewKeyUp(object sender, KeyEventArgs e)
{
Key key = e.Key;
if (sender is not TextBox tbx || tbx == null) { return; }
if ((key >= Key.D0 && key = Key.NumPad0 && key  255)
{
tbx.Text = "255";
return;
}
SetTbxFocus(tbx, true, true);
}
}
else if (key == Key.Delete)
{
// 无操作
}
else if (key == Key.Enter)
{
// 暂时不做操作
}
else if (key == Key.Back)
{
}
else if (key == Key.Tab)
{
// 暂时不做操作
}
else if (key == Key.Left)
{
}
else if (key == Key.Right)
{
}
else
{
// 不是上述按键,就不处理
e.Handled = true;
}
}
///
/// 设置当前输入框的前面或后面的输入框获取焦点,以及是否全选内容
///
/// 当前输入框
/// 是否是后面的输入框(false为前面的输入框)
/// 是否全选内容
private void SetTbxFocus(TextBox curretTbx, bool isBack, bool isSelectAll)
{
// 所有的ip输入框
var TbxIPList = new List();
foreach (UIElement item in GridIPAddress.Children)
{
if (item.GetType() != typeof(TextBox))
{
continue;
}
if (item is not TextBox tbx || tbx == null)
{
continue;
}
TbxIPList.Add(tbx);
}
// 要聚焦的输入框
TextBox? nextTbx = null;
// 往后
if (isBack)
{
// 当前输入框是前三个,那么就取后一个输入框
int index = TbxIPList.IndexOf(curretTbx);
if (index = 1)
{
nextTbx = TbxIPList[index - 1];
}
}
// 设置焦点 全选内容
if (nextTbx != null)
{
nextTbx.Focus();
if (isSelectAll)
{
nextTbx.SelectAll();
}
}
}
}
}

http://www.jsqmd.com/news/3037/

相关文章:

  • 【macOS】垃圾箱中文档无法清理的“含特殊字符文件名”的技巧
  • Git 工作树 (worktree)、合并 (merge) 流程、拉取请求 (PR) 机制,以及基线分支概念
  • 【HD300I 】基于昇腾 310P 的全国产化智能计算模组
  • 《密码系统设计》第三周
  • 详细介绍:Cloudflare 推出 GenAI 安全工具,守护企业数据
  • 论小学教师转移矛盾的方法——以“小组连坐制”为例
  • 编译器与链接器--通俗解释
  • VS2022 不支持 .NET Framework 4.0 的解决方法
  • 【Origin】数据分析后的图,提取到外部图表
  • P3747 [六省联考 2017] 相逢是问候
  • WPF Prism register interface and implemented interface service
  • 构建一个支撑10万设备的虚拟电厂IoT高效的平台
  • B1I、B1C、B2a双频北斗卫星定位芯片AT9850B-F7N-22
  • 2025 国产代码托管新局:Gitee 领跑本土生态 - 实践
  • Wi-Fi技能——网络安全
  • idea打开properties文件中文乱码问题
  • 完整教程:【开源】基于STM32的智能车尾灯
  • 机动数据集ESA
  • 人机共生:AI如何重塑招聘全流程,赋能HR战略升级
  • hot100题简单题
  • Scanner 和if
  • python自动化操作PDF
  • 注意事项
  • 完整教程:【数据结构】 ArrayList深入解析
  • 完整教程:PyCharm 在 Linux 上的安装指南
  • 产品经理如何借力项目管理软件,驾驭复杂项目并准时上线?
  • 分布式 ID 生成方案实战指南:从选型到落地的全场景避坑手册(二) - 指南
  • 公钥密码与可证安全概述
  • Python标准库enum模块实现枚举类
  • 程序员的旅行神器:用AI提示词工程解决选择困难症