zoukankan      html  css  js  c++  java
  • C#中的InputBox

    方法一

    在.NET Framework中并没有类似VB中的InputBox函数,虽然可以借助对VB 的Runtime引用,以在VB除外的.NET程序中使用VB的InputBox,但是为什么不自己写一个类实现类似的功能呢?

    下面一个类实现了类似的InputBox函数的功能:

    using System;
    using System.Windows.Forms;
    
    namespace Input
    {
        /// <summary>
        /// clsInputBox 的摘要说明。
        /// </summary>
        public class InputBox : System.Windows.Forms.Form
        {
            private System.Windows.Forms.TextBox txtData;
            private System.Windows.Forms.Label lblInfo;
            private System.ComponentModel.Container components = null;
    
            private InputBox()
            {
                InitializeComponent();
            }
            
            protected override void Dispose(bool disposing)
            {
                if (disposing)
                {
                    if (components != null)
                    {
                        components.Dispose();
                    }
    
                }
                base.Dispose(disposing);
            }
            
            private void InitializeComponent()
            {
    
                this.txtData = new System.Windows.Forms.TextBox();
                this.lblInfo = new System.Windows.Forms.Label();
                this.SuspendLayout();
    
                // 
                // txtData
                // 
    
                this.txtData.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, 
                                                            System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
                this.txtData.Location = new System.Drawing.Point(19, 8);
                this.txtData.Name = "txtData";
                this.txtData.Size = new System.Drawing.Size(317, 23);
                this.txtData.TabIndex = 0;
                this.txtData.Text = "";
                this.txtData.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtData_KeyDown);
    
                // 
                // lblInfo
                // 
    
                this.lblInfo.BackColor = System.Drawing.SystemColors.Info;
                this.lblInfo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
                this.lblInfo.FlatStyle = System.Windows.Forms.FlatStyle.System;
                this.lblInfo.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular,
                                                            System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
                this.lblInfo.ForeColor = System.Drawing.Color.Gray;
                this.lblInfo.Location = new System.Drawing.Point(19, 32);
                this.lblInfo.Name = "lblInfo";
                this.lblInfo.Size = new System.Drawing.Size(317, 16);
                this.lblInfo.TabIndex = 1;
                this.lblInfo.Text = "[Enter]确认 | [Esc]取消";
    
                // 
                // InputBox
                // 
    
                this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
                this.ClientSize = new System.Drawing.Size(350, 48);
                this.ControlBox = false;
                this.Controls.Add(this.lblInfo);
                this.Controls.Add(this.txtData);
                this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
                this.Name = "InputBox";
                this.Text = "InputBox";
                this.ResumeLayout(false);
            }
    
            //对键盘进行响应
            private void txtData_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    this.Close();
                }
    
                else if (e.KeyCode == Keys.Escape)
                {
                    txtData.Text = string.Empty;
                    this.Close();
                }
    
            }
    
            //显示InputBox
            public static string ShowInputBox(string Title, string keyInfo)
            {
                InputBox inputbox = new InputBox();
                inputbox.Text = Title;
                if (keyInfo.Trim() != string.Empty)
                    inputbox.lblInfo.Text = keyInfo;
                inputbox.ShowDialog();
    
                return inputbox.txtData.Text;
            }
        }
    
    }

    直接调用该类的静态方法ShowInputBox就可以,其中Title参数是对话框的Text,keyInfo参数是标签lblInfo(可以显示自定义的信息)的Text。具体调用如下:

    private void button_Click(object sender, System.EventArgs e)
     {
    
          //Microsoft.VisualBasic.Interaction.InputBox(  "type  your  name  ",  "input  ","",0,0); 
          //可以将你要显示的文本信息代替下面的string.Empty。
    
          string inMsg= Input.InputBox.ShowInputBox("输入信息",string.Empty );
          //对用户的输入信息进行检查
          if (inMsg.Trim() != string.Empty )
          {
               MessageBox.Show(inMsg);
          }
          else
          {
               MessageBox.Show("输入为string.Empty");
          }
    
     }

    方法二

    VB中的原来的函数库,部分进入了 Microsoft.VisualBasic.Interaction 中,例如: InputBox, MsgBox 就是了。

    在C#使用 InputBox,当然可以自己实现, 其实就是一个 Form 而已,我更推荐使用VB.NET里面的,嘿嘿,使用方法:

    1. 添加 Microsoft.VisualBasic 的引用

    2. string str = Microsoft.VisualBasic.Interaction.InputBox(“提示性文字”, “对话框标题”, “默认值”, X坐标, Y坐标);

    上面的 X坐标, Y坐标 可以取值为 –1 和 -1,表示屏幕中间位置显示。

  • 相关阅读:
    【Elasticsearch 技术分享】—— ES 常用名词及结构
    【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?
    除了读写锁,JUC 下面还有个 StampedLock!还不过来了解一下么?
    小伙伴想写个 IDEA 插件么?这些 API 了解一下!
    部署Microsoft.ReportViewe
    关于TFS强制undo他人check out
    几段查看数据库表占用硬盘空间的tsql
    How to perform validation on sumbit only
    TFS 2012 Disable Multiple Check-out
    在Chrome Console中加载jQuery
  • 原文地址:https://www.cnblogs.com/PocketZ/p/1724485.html
Copyright © 2011-2022 走看看