Windows 控件限制用户输入的基本法门(.NET 篇)

DotNetTextBox:增强型.NET文本输入控件 本文还有配套的精品资源,点击获取 简介:DotNetTextBox是一款增强型文本输入控件,基于.NET Framework开发,专为Windows Forms和***应用设计。它提供格式化输入、自动完成功能、自定义验证规则、多行和富文本支持、可定制的右键菜单、事件驱动编程、皮肤和样式更换、国际化支持、拖放功能和辅助功能。通过学习其源代码,开发者能够掌握控件的设计与实现,并... 阅读详情

/******************************************************************

 

                         Windows 控件限制用户的基本法门(.NET 篇)

                                        VB.NET 的在下面 

-------------------------------------------------------------------

     本代码演示 控制用户的输入的基本方式(屏蔽非数字字符输入)

     .net 下限制用户输入,看见很多人是在 键盘,或 textBox 的 TextChanged 事件里做

     个人认为那样是不正确的,

     1.不能限制用户的粘贴

     2.严重干扰数据绑定等操作

     3.有时还需要备份原始数据进行还原

    

     其实正确的限制输入的时机是在,windows 消息 WM_CHAR 触发时

     但.net 恰恰没有提供这个消息的事件映射.怎么办?

    

     提供方案两列:

    

     1)继承TextBox 重写 WndProc 函数 (优点点oo编程的优点我不说了)

          处理

          if (m.Msg==WM_CHAR){

               // 然后取 m.WParam 进行判断 m.WParam 就是用户输入的字符的 int 表示方式

               // 如果是被限制的字符 直接 Return

               //不走 base.WndProc (ref m);

          }

          if(m.Msg==WM_PASTE)

          {

               //判断剪贴板的数据是否是符合要求如果符合不做任何处理

               //否则 Return 不走默然处理即可

              

          }

          base.WndProc (ref m);

         

     2)利用API SetWindowLong 替换默认的处理消息的函数进行处理

       本文写的就是这种 ,演示如何声明API 而且本方法很多语言都可以使用,

       但如果程序中有多个需要限制输入的控件而且相做通用类库的话

       使用建议使用方案一

 

废话不多说了看代码吧.

*******************************************************************/

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

using System.Data;

using System.Runtime.InteropServices;

using System.Text.RegularExpressions;

using System.Diagnostics;

namespace SETWNDPROC

{

     /// <summary>

     /// Form1 的摘要说明。

     /// </summary>

     public class Form1 : System.Windows.Forms.Form

     {

          //声明一个委托

          public  delegate  IntPtr  NewWndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

 

          //API 具体帮助请察看 MSDN 或到 MS 网站上去找

          [DllImport("user32.dll", CharSet=CharSet.Auto)]

          public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, NewWndProc wndproc);

 

          [DllImport("user32.dll", CharSet=CharSet.Auto)]

          public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong);

          //没用到

          [DllImport("user32.dll", CharSet=CharSet.Auto)]

          public static extern IntPtr GetWindowLong(IntPtr hWnd, int nIndex);

 

          [DllImport("user32.dll", CharSet=CharSet.Auto)]

          public static extern IntPtr CallWindowProc(IntPtr wndProc, IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);

 

          //SetWindowLong 用的常数,不知道什么意识的去看 msdn吧

          public const int GWL_WNDPROC = -4;

          //右键菜单消息

          public const int WM_CONTEXTMENU = 0x007b;

          //粘贴消息

          public const int WM_PASTE = 0x0302;

          //输入字符消息(键盘输入的,输入法输入的好像不是这个消息)

          public const int WM_CHAR = 0x0102;

 

         

          //一定要声明为实列变量否则,局部变量发送给API后很容易被_u71 ?C 回收,

          //会出现根本无法捕获的异常

          private NewWndProc wpr=null;

          //备份的默然处理函数

          private  IntPtr oldWndProc=IntPtr.Zero;

 

 

          private System.Windows.Forms.TextBox textBox1;

          /// <summary>

          /// 必需的设计器变量。

          /// </summary>

          private System.ComponentModel.Container components = null;

 

          public Form1()

          {

               //

               // Windows 窗体设计器支持所必需的

               //

               InitializeComponent();

 

               //

               // TODO: 在 InitializeComponent_u-29693 ?用后添加任何构造函数代码

               //

          }

 

          /// <summary>

          /// 清理所有正在使用的资源。

          /// </summary>

          protected override void Dispose( bool disposing )

          {

               if( disposing )

               {

                    if (components != null)

                    {

                         components.Dispose();

                    }

               }

               base.Dispose( disposing );

          }

 

          #region Windows 窗体设计器生成的代码

          /// <summary>

          /// 设计器支持所需的方法 - 不要使用代码编辑器修改

          /// 此方法的内容。

          /// </summary>

          private void InitializeComponent()

          {

               this.textBox1 = new System.Windows.Forms.TextBox();

               this.SuspendLayout();

               //

               // textBox1

               //

               this.textBox1.Location = new System.Drawing.Point(32, 16);

               this.textBox1.Name = "textBox1";

               this.textBox1.TabIndex = 0;

               this.textBox1.Text = "555";

               this.textBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;

 

               //

               // Form1

               //

               this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

               this.ClientSize = new System.Drawing.Size(152, 53);

               this.Controls.Add(this.textBox1);

               this.Name = "Form1";

               this.Text = "Form1";

               this.Load += new System.EventHandler(this.Form1_Load);

               this.Closed += new System.EventHandler(this.Form1_Closed);

               this.ResumeLayout(false);

 

          }

          #endregion

 

          /// <summary>

          /// 应用程序的主入口点。

          /// </summary>

          [STAThread]

          static void Main()

          {

                       

               Application.Run(new Form1());

         

              

              

          }   

 

          private  IntPtr TextBoxWndProc(IntPtr_u104 ?Wnd, int msg, IntPtr wParam, IntPtr lParam)

          {

               IntPtr returnVar=IntPtr.Zero;

              

                    switch (msg)

                    {

                         //粘贴消息包括 Ctrl+V Or 右键菜单粘贴

                         case WM_PASTE:

                              //取剪贴板对象

                              IDataObject iData = Clipboard.GetDataObject();

                              //判断是否是Text

                              if(iData.GetDataPresent(DataFormats.Text))

                              {

                                   //取数据

                                   string str;

                                   str = (String)iData.GetData(DataFormats.Text);

                                  

                                  

                                   /*

                                     如果需要正负号,先要判断TextBox 上光标的位置

                                     如果光标在最前面可以用这个,^(((/+|-)/d)?/d*)$

                                     下面的 WM_CHAR 也要做相应变化

                                   */

                                   //如果是数字(可以粘贴跳出)

                                   if (Regex.IsMatch(str,@"^(/d{1,})$")) break;

                              }

                              //不可以粘贴

                              return (IntPtr)0;

                         case WM_CHAR:

                                  

                                   int keyChar=wParam.ToInt32();

                                   Debug.WriteLine(keyChar);

                                   bool charOk=(keyChar>47 && keyChar<58)    ||   //数字

                                        keyChar==8    ||                                 //退格

                                        keyChar==3 || keyChar==22 || keyChar==24;//拷贝,粘贴,剪切

                                  

                                   //如果不是需要的的字符 wParam 改为字符 0

                                   //return (IntPtr)0; 也行不过没有禁止输入的 键盘音

                                   if (!charOk) wParam=(IntPtr)0;                 

                                  

                              break;

                         //禁止右键菜单(如果需要的话)

                         //case WM_CONTEXTMENU:

                         //return (IntPtr)0;

                    }

    

               //回调备份的默认处理的函数

                returnVar= CallWindowProc(oldWndProc,hWnd,msg,wParam,lParam);            

               return returnVar;

         

          }

 

          private void Form1_Load(object sender, System.EventArgs e)

          {

               this.Show();

              

               //备份默认处理函数

               //oldWndProc=GetWindowLong(textBox1.Handle,GWL_WNDPROC);

 

               //实列化委托(这里就是回调函数)

               wpr= new NewWndProc(this.TextBoxWndProc);

               //替换控件的默认处理函数(并且返回原始的 默认处理函数,是一个函数指针的地质)

               oldWndProc=SetWindowLong(textBox1.Handle,GWL_WNDPROC,wpr);

              

              

              

                   

          }

 

          private void Form1_Closed(object sender, System.EventArgs e)

          {   

               //还原默认处理函数

               if (!oldWndProc.Equals(IntPtr.Zero))

                    SetWindowLong(textBox1.Handle,GWL_WNDPROC,oldWndProc);

          }

 

         

     }

}

 



 FlashElf 2004年10月31日16:25:21



'/******************************************************************

 

'                      Windows 控件限制用户输入的基本法门(.NET 篇) For VB.NET

'                      C# 篇

'                      http://blog.youkuaiyun.com/flashelf/archive/2004/10/31/161024.aspx

'

'-------------------------------------------------------------------

'    本代码演示 控制用户的输入的基本方式(屏蔽非数字字符输入)

'    .net 下限制用户输入,看见很多人是在 键盘,或 textBox 的 TextChanged 事件里做

'    个人认为那样是不正确的,

'    1.不能限制用户的粘贴

'    2.严重干扰数据绑定等操作

'    3.有时还需要备份原始数据进行还原

 

'    其实正确的限制输入的时机是在,windows 消息 WM_CHAR 触发时

'    但.net 恰恰没有提供这个消息的事件映射.怎么办?

 

'    提供方案两列:

 

'    1)继承TextBox 重写 WndProc 函数 (优点点oo编程的优点我不说了)

'        处理

'        if (m.Msg==WM_CHAR){

'             // 然后取 m.WParam 进行判断 m.WParam 就是用户输入的字符的 int 表示方式

'             // 如果是被限制的字符 直接 Return

'             //不走 base.WndProc (ref m);

'        }

'        if(m.Msg==WM_PASTE)

'        {

'             //判断剪贴板的数据是否是符合要求如果符合不做任何处理

'             //否则 Return 不走默然处理即可

 

'        }

'        base.WndProc (ref m);

 

'    2)利用API SetWindowLong 替换默认的处理消息的函数进行处理

'      本文写的就是这种 ,演示如何声明API 而且本方法很多语言都可以使用,

'      但如果程序中有多个需要限制输入的控件而且相做通用类库的话

'      使用建议使用方案一

 

'废话不多说了看代码吧.

'*******************************************************************/

Imports System.Runtime.InteropServices

Imports System.Text.RegularExpressions

Public Class Form1

     Inherits System.Windows.Forms.Form

     '声明一个委托

     Public Delegate Function NewWndProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

     '声明 N 个API

     <DllImport("user32.dll", CharSet:=CharSet.Auto)> _

        Public Shared Function CallWindowProc(ByVal wndProc As IntPtr, ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

     End Function

 

     <DllImport("user32.dll", CharSet:=CharSet.Auto)> _

      Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal wndproc As NewWndProc) As IntPtr

     End Function

 

     <DllImport("user32.dll", CharSet:=CharSet.Auto)> _

     Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As IntPtr) As IntPtr

     End Function

     '要用的常数

     Public Const GWL_WNDPROC As Integer = -4

     '输入字符消息(键盘输入的,输入法输入的好像不是这个消息)

     Public Const WM_CHAR As Integer = 258

     '右键菜单消息

     Public Const WM_CONTEXTMENU As Integer = 123

     '粘贴消息

     Public Const WM_PASTE As Integer = 770

 

     Private wpr As NewWndProc

     Private oldWndProc As IntPtr

 

#Region " Windows 窗体设计器生成的代码 "

 

     Public Sub New()

         MyBase.New()

 

         '该调用是 Windows 窗体设计器所必需的。

         InitializeComponent()

 

         '在 InitializeComponent() 调用之后添加任何初始化

 

     End Sub

 

     '窗体重写 dispose 以清理组件列表。

     Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

         If disposing Then

              If Not (components Is Nothing) Then

                   components.Dispose()

              End If

         End If

         MyBase.Dispose(disposing)

     End Sub

 

     'Windows 窗体设计器所必需的

     Private components As System.ComponentModel.IContainer

 

     '注意: 以下过程是 Windows 窗体设计器所必需的

     '可以使用 Windows 窗体设计器修改此过程。

     '不要使用代码编辑器修改它。

     Friend WithEvents TextBox1 As System.Windows.Forms.TextBox

     <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

         Me.TextBox1 = New System.Windows.Forms.TextBox

         Me.SuspendLayout()

         '

         'TextBox1

          '

         Me.TextBox1.Location = New System.Drawing.Point(24, 16)

         Me.TextBox1.Name = "TextBox1"

         Me.TextBox1.TabIndex = 0

         Me.TextBox1.Text = ""

         Me.TextBox1.TextAlign = System.Windows.Forms.HorizontalAlignment.Right

         '

         'Form1

         '

         Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)

         Me.ClientSize = New System.Drawing.Size(160, 53)

         Me.Controls.Add(Me.TextBox1)

         Me.Name = "Form1"

         Me.Text = "Form1"

         Me.ResumeLayout(False)

 

     End Sub

 

#End Region

     Private Function TextBoxWndProc(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr

         Dim returnVar As IntPtr = IntPtr.Zero

 

         Select Case msg

              Case WM_CHAR

                   Dim keyChar As Integer = wParam.ToInt32()

                   Dim charOk As Boolean = (keyChar > 47 AndAlso keyChar < 58) _

                    OrElse keyChar = 8 OrElse _

                    keyChar = 3 OrElse keyChar = 22 OrElse keyChar = 24

                   '如果不是需要的的字符 wParam 改为字符 0

                   'return (IntPtr)0; 也行不过没有禁止输入的键盘音

 

                   If Not charOk Then

                       wParam = IntPtr.Zero

                   End If

                   Exit Select

                   '粘贴消息包括 Ctrl+V Or 右键菜单粘贴

              Case WM_PASTE

                   '取剪贴板对象

                   Dim obj1 As IDataObject = Clipboard.GetDataObject

                   '判断是否是Text

                   If obj1.GetDataPresent(DataFormats.Text) Then

                       Dim text1 As String = CType(obj1.GetData(DataFormats.Text), String)

 

                       '如果需要正负号,先要判断TextBox 上光标的位置

                       '如果光标在最前面可以用这个,^(((/+|-)/d)?/d*)$

                       '下面的 WM_CHAR 也要做相应变化

                       '

                       '如果是数字(可以粘贴跳出)

                       If Regex.IsMatch(text1, "^(/d{1,})$") Then

                            Exit Select

                       End If

                   End If

                   Return IntPtr.Zero

         End Select

         returnVar = CallWindowProc(oldWndProc, hWnd, msg, wParam, lParam)

         Return returnVar

     End Function

 

     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

         '//实列化委托(这里就是回调函数)

         wpr = New NewWndProc(AddressOf Me.TextBoxWndProc)

         '//替换控件的默认处理函数(并且返回原始的 默认处理函数,是一个函数指针的地质)

         oldWndProc = SetWindowLong(TextBox1.Handle, GWL_WNDPROC, wpr)

     End Sub

 

     Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed

         '还原默认处理函数

         If Not oldWndProc.Equals(IntPtr.Zero) Then

              SetWindowLong(TextBox1.Handle, GWL_WNDPROC, oldWndProc)

         End If

     End Sub

End Class


Flashelf 2004年10月31日18:00:19

C#实现数字输入功能的按钮和文本框控件指南 按钮控件在Windows Forms应用程序中承担着触发各种事件的角色,如提交表单、打开新窗体、触发自定义数字键盘等。为按钮绑定点击事件是一个基础且关键的操作,它涉及到对控件事件的监听和响应。首先,在Visual Studio中,通过拖放方式在窗体上添加一个Button控件。然后选中该控件,在属性窗口中找到“事件”按钮,双击“Click”事件来生成事件处理程序,如下代码所示:// 代码逻辑部分在这个事件处理函数中,你可以添加触发自定义数字键盘的逻辑,例如:创建一个自定义数字键盘窗体。 阅读详情

相关推荐

C#.NET实现窗口控件信息获取工具详解

回顾整个旅程,我们从一个简单的句柄出发,穿越了消息循环、安全隔离、文本提取、自动化框架等多个层次,最终构建出一套完整的GUI信息采集能力。但这不仅仅是为了炫技。在真实的工业场景中,这些技术正在默默发挥作用:- 🧑‍🦯 视障人士依靠屏幕阅读器浏览网页;- 🏭 测试工程师用自动化脚本验证上千个UI路径;- 🔐 安全团队分析恶意软件界面行为以制定防御策略;- 🛠️ 开发者调试复杂第三方控件的渲染异常……它们共同的起点,就是那个不起眼的HWND。

weixin_42602726的博客 1054

Asp.net控制TextBox只能输入数字

在Asp.net开发中,为了确保数据的正确性,经常要对用户输入的内容进行验证,比如说用户只能输入数字,不能输入中文和英文,这如何实现呢?下面我们来看看。     实现过程,在TextBox控件中加两个属性事件: 57) event.returnValue=false;"> 键盘按下去时检查按下的是不是0—9,如果不是的话,不将当前的输入放入文本框中。 说明: 此方法控制TextBox只输入

2万+

asp.net页面输入控件屏蔽特殊字符键盘输入

在某些WEB应用程序中,如果一项项去判断用户的输入框是否是非法字符的话,可能很麻烦——如果,根据特殊字符的键盘码判断——在客户输入时就将控件设置为一种不可编辑状态,那多好!

WIN32程序IP Control实现禁止输入非法字符

刚来公司,要维护一个WIN32程序,因为之前用的BCB,根本不知道消息是怎样处理的,好个抓耳挠腮。一个IP控件,控件本身已经实现了只能键入(注意:只是键入)数字,但是如果Ctrl+V或者鼠标右键粘贴都可以输入非法字符,而且这个控件会默认把非法字符处理成0,比如你输入“192.168.haha.123”,你获取IP后就是“192.168.0.123”,之前尝试子类化控件,可发现还是不行,不知道是不是

对牛乱弹琴 2166

关于在输入框内输入大于号或小于号的解决方案

关于在输入框内输入大于号或小于号的解决方案关于在输入框内输入大于号或小于号的解决方案

asp.net(c#)限制用户输入规定的字符和数字的代码

一下是这个代码: 只允许 用户名输入:用户名称的开头,必须为0~9、a~z或A~Z ! 代码如下: protected void Button3_Click(object sender, EventArgs e) { int error_count = 0; //用于识别用户名的合法性 string str = TextBox1.Text.Trim(); if (str == string.Empty) { Response.Write(“用户名称不能为空!”); return; } str = str.Substring(0, 1); //用户名称第1个字符 string strchar

Windows 控件限制用户输入的基本法门(.NET 篇) 【摘录自FlashELF's blog】

/******************************************************************                          Windows 控件限制用户的基本法门(.NET 篇)                                        VB.NET 的在下面 ----------------------------

Johnson学习.net的点点滴滴 1024

Cadence Sigrity PowerSI实战:从.brd到S参数提取的完整避坑指南

本文详细介绍了使用Cadence Sigrity PowerSI进行信号完整性分析的完整流程,从.brd文件预处理到S参数提取的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决高速PCB设计中的信号质量问题,提升仿真精度和设计效率。

carrot的博客 694

Windows 控件限制用户输入的基本法门(.NET 篇) ===========转贴

/******************************************************************                          Windows 控件限制用户的基本法门(.NET 篇)                                        VB.NET 的在下面 ------------------

雪后残阳 845

U盘 未知USB设备 设定地址失败 由于该设备有问题Windows 已将其停止(代码 43) 终极解决方案(做过系统装机盘而无法解决的必看)

U盘由于该设备有问题Windows 已将其停止(代码 43) 终极解决方案 我们在使用U盘的时候偶尔会碰到下列情况 一般是因为传输数据的过程中,死机或未响应直接断点或拔掉设备导致的,U盘再次插上之后出现设定地址失败。无法再次读取设备的数据。 解决方案: 首先请确认出现该情况不是因为你摔了U盘或接口处产生断裂这种物理损伤导致的!!! 首先请确认出现该情况不是因为你摔了U盘或接口处产生断裂这种物理损...

qq_39123987的博客 13万+

鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结

1、算法说明经纬度矫正法, 可以把鱼眼图想象成半个地球, 然后将地球展开成地图,经纬度矫正法主要是利用几何原理, 对图像进行展开矫正。经过P点的入射光线没有透镜的话,本应交于相机成像平面的e点。然而,经过鱼眼相机的折射,光线会交于相机成像平面的d点,就产生了畸变,因此畸变图像整体上呈现出像素朝图像中心点聚集的态势。而去畸变,就是将折射到d点的点,重新映射回到e点,因此去畸变之后的图像与原始的鱼眼图像相比,仿佛是把向心聚集的像素又重新向四周铺展开来。AVM环视系统——鱼眼相机去畸变算法 - 知乎。

大胡子大叔的专栏 2万+

Windows 控件限制用户输入的基本法门(.NET 篇) 选择自 FlashElf 的 Blog

 /******************************************************************                          Windows 控件限制用户的基本法门(.NET 篇)                                        VB.NET 的在下面 -----------------

异道的专栏 1478

STM32开发工具链选型:MDK、CubeIDE、VSCode与IAR深度对比

嵌入式开发工具链是连接软件逻辑与硬件行为的核心枢纽,其选择直接影响代码可靠性、调试效率与量产稳定性。从编译器优化能力、调试协议支持(如ARM CoreSight、SWO)、硬件抽象层级(寄存器/LL/HAL)到跨平台构建能力,不同工具在实时性保障、静态分析合规性(如MISRA-C)、WCET可预测性及生态开放度上存在本质差异。尤其在STM32平台,Keil MDK凭借深度调试能力成为HardFault定位首选,STM32CubeIDE依托图形化配置加速外设初始化,而VSCode+PlatformIO则以LS

weixin_42602368的博客 429

Windows 控件限制用户输入的基本法门(.NET 篇) 选择自 FlashElf 的 Blo

Windows 控件限制用户的基本法门(.NET 篇) ------------------------------------------------------------------- 本代码演示 控制用户的输入的基本方式(屏蔽非数字字符输入) .net 下限制用户输入,看见很多人是在 键...

weixin_30552635的博客 128

Python计算时间差的方法

使用datetime模块是Python内置的方法,使用timedelta对象可以更精确地计算时间差,而使用dateutil库则提供了更为灵活和方便的操作方式。我们可以使用datetime模块中的datetime类来表示一个具体的日期和时间,并进行相应的运算。在Python中,我们经常需要计算日期和时间之间的差异,例如计算两个日期之间的天数、小时数、分钟数等。Python提供了多种方法来计算时间差,下面我们将介绍其中的几种常用方法,并附上相应的源代码。在上面的代码中,我们使用了dateutil库中的。

学习使你进步。 2086

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 747

Windows 控件限制用户的基本法门(C#.NET 篇)

/******************************************************************                          Windows 控件限制用户的基本法门(.NET 篇)                                        C#.NET 的在下面 --------------------

phoubes的专栏 1466

基于 MATLAB 的精馏塔模拟仿真

基于 MATLAB 的精馏塔模拟仿真精馏塔是一种重要的化工设备,其中乙烯精馏塔和醋酸乙烯精馏塔是常见的两种精馏塔。本文基于 MATLAB 软件,给出了针对这两种精馏塔的模拟仿真代码。

与其临渊羡鱼,不如退而结网 904

Windows 控件限制用户输入(.NET 篇)

 /******************************************************************                          Windows 控件限制用户的基本法门(.NET 篇)                                        VB.NET 的在下面 -----------------

随风自由 827

五、实战pxe安装ubuntu 22.04 软raid1(实际生产pxe配置)

这段配置文件是一个cloud-init的自动安装配置,用于自动化部署Ubuntu服务器操作系统。它定义了从系统身份、键盘布局、区域设置到磁盘分区和RAID配置的一系列设置,并且包含了在安装过程的最后阶段执行的一些命令。基础设置version: 1指定了autoinstall配置文件的版本。source定义了安装源,这里是ubuntu-server。identity设置了主机名(hostname)、用户(username)和密码(password注意这里的密码是经过加密的。键盘与语言设置。

jundao1997的专栏 999

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

在IE浏览器中使用Windows窗体控件(三)

调试Windows窗体控件   要调试窗体控件,你需要按照下面步骤进行。          1.打开浏览器并请求包含窗体控件的那个Html页面。          2.打开visual Studio.Net同时选择工具->调试进程就会显示下面的对话框。 在这个进程对话框中,选择IEXPLORE.EXE 点击附加按钮。当你点击附加按钮时会跳出一个对话框提示你选择要调试的程序类型。我们选择了Com

高崇的文档中心 1413

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

解決ASP.NET CrystalReports 用戶限制的處理方法

由於ASP.NET CrystalReports不支援多用戶同時在線,此時可以用以下的方法來處理:把WEB前端列印傳遞到WINDOWS後端來處理,這樣只有一個USER在使用CrystalReports. 一.WindowsService1.使用VS2008新建項目:WindowsService2.在Service1.cs上添加時間控件,一定是System.Timers.Time

Free Labor 的专栏 679

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【WinForm】设置控件里面的所有TextBox只能输入数字

设置控件里面的所有TextBox只能输入数字 回顾 【WinForm】TextBox只能输入数字 只能输入整数 private static void tb_KeyPress(object sender, KeyPressEventArgs e) { //如果输入的不是退格和数字,则屏蔽输入 if (!(e.KeyChar == '\b' || (e.KeyCh...

GreAmbWang的博客 2199

vb.net控制TextBox控件只能输入数值型字符串

<br />以下代码控制TextBox控件只能输入数值型字符串,具体内容如下:<br />Public Sub CheckKeyPress(ByVal TargetTextBox As TextBox, ByVal e As System.Windows.Forms.KeyPressEventArgs, Optional ByVal Minus As Boolean = False, Optional ByVal DecimalCount As Integer = 0) <br />        Dim

lhm19810710的专栏 916
上一篇: ASP.NET 验证控件安全隐患
下一篇: 以编程方式使用批语句节省 数据库 IO 来提高性能
曲滨_銘龘鶽
博客等级 码龄24年 67粉丝 20原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值