精华内容
下载资源
问答
  • 本文介绍了如何创建只读的文本框控件的内容。 使一个文本框控件只读 在Visual Basic中,如果文本框控件的MultiLine属性设置为True ,文本将会自动地换行到下一行。另外,如果文本框控件的ScrollBars 属性设置为3-Bo

       Visual Basic中的文本框控件允许用户在其中键入文本,以便在程序中使用。相反, 程序员可能会希望显示一些文本但不希望用户编 辑该文本。本文介绍了如何创建只读的文本框控件的内容。

      使一个文本框控件只读
      在Visual Basic中,如果文本框控件的MultiLine属性设置为True ,文本将会自动地换行到下一行。另外,如果文本框控件的ScrollBars 属性设置为3-Both(或者1-Vertical,或者2-Horizontal),用户还能够 滚动控件中的内容。
      程序员要想实现文本框控件中的文本不可编辑,可将文本框控件 中的内容设置为只读状态,这可以通过使用Microsoft Windows应用程 序编程接口(API)的SendMessage函数来实现。
      SendMessage函数可以用来发送一个EM_SETREADONLY消息到文本 框控件中,这将使文本框控件变为只读。
      要在程序中使用该SendMessage函数,需要将如下的声明语句包含 在项目的通用声明部分中(注意该声明语句需要书写在一行内):
      Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"(B yVal hwnd As Long, ByVal wMsg As Long, ByVa l wParam As Integer, ByVallParam As Long) As Long
      该SendMessage函数需要4个参数,如下所示:
      hwnd 一个长整数值,它包含文本框控件的句柄。
      wMsg 一个长整数值,它包含被发送的消息,在这个例子里,是EM_ SETREADONLY。
      wParam 一个整数值,如果它为True,则控件被设置只读标记,如 果它为False,则删除控件的只读标记。
      lParam 一个长整数值,它应该被设置为0(EM_SETREADONLY不使 用它)。
      在程序运行了此SendMessage函数之后,将返回一个长整数值,指 明调用成功(返回值非0)或是失败(返回值为0)。
      样例程序
      该程序显示了如何防止用户编辑一个文本框控件中的内容。
      1.在Visual Basic中开始一个新的工程,采用缺省的方法建立For m1。
      2.将如下的常量和声明语句添加到Form1的通用声明部分中(注意 该声明语句需
      要书写在一行内):
      Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVa l wParam As Integer, ByVal lPara mAs Long) As Long
      Const WM_USER = &H400
      Const EM_SETREADONLY = (WM_USER + 31)
      3.在Form1上添加一个文本框控 采用缺省的方法建立Text1。 将其MultiLine属性
      设置为True,并且将它的ScrollBars属性设置为3-Both。
      4.在Form1上添加一个命令按钮控件,采用缺省的方法建立Comman d1。
      5.将如下的代码添加到Command1的单击事件中:
      Private Sub Command1_Click()
      Dim RetVal As Long
      RetVal = SendMessage(Text1.hwnd, EM_SETREADONLY, True, B yVal 0&)
      End Sub
      通过按下F5键来执行样例程序。在文本框控件中键入一些文本, 可以使用水平和垂直流动条来滚动文本,还可以改变文本的内容。单 击命令按钮,用户仍然可以使用流动条或是光标键来查看文本框控件 的内容,但是不能编辑它。  

    展开全文
  • 在一个.NET的应用程序中使用自己创建的控件可以大大增强应用程序的功能,你可以在原有控件的基础上加入想要的...在这篇文章中,我们将看下,如何用asp.net创建一个自定义的文本框控件,当焦点在该文本框控件上及离开
    <script language='javascript' src='http://www.shiqiaotou.com/donetk/Header.js'></script>在一个.NET的应用程序中使用自己创建的控件可以大大增强应用程序的功能,你可以在原有控件的基础上加入想要的属性和行为,甚至创建自定义的控件。在asp.net中,我们更可以往一些控件中增加一些客户端的javascript功能,减少每次在提交页面时将数据返回给服务器的次数 ,从而提高程序的功能和效率。在这篇文章中,我们将看下,如何用asp.net创建一个自定义的文本框控件,当焦点在该文本框控件上及离开控件时,文本框控件的背景颜色会随之改变。这个控件将包含如下的功能:

      1) 当用户在文本框输入数据时,文本框的背景颜色以预先设定的颜色显示,当用户的输入焦点离开文本框时,能恢复原来文本框的背景颜色。

      2)可以在vs.net的设计期间,改变该自定义控件的各项属性。

      下面我们开始一步步创建该控件。首先,创建一个空的vs.net解决方案,增加一个asp.net工程(命名为webapplication)和一个web控件库工程(命名为ControLib)。将asp.net工程中的webform1.aspx重新命名为container.aspx;将web控件库工程中的webcustomercontrol1.cs重新命名为PimpedOutTextbox.cs。命名后如下图所示:

    用ASP.NET创建自定义文本框



      接着,往pimpedouttextbox类中添加代码。因为这是个WEB控件库,VS.NET已经引入相关的类库。由于我们这个应用将会用到颜色方面的功能,所以引入绘图类。

    using System.Drawing;


      再用如下的代码替换原来预定义的代码。

    line 1: [assembly: TagPrefix ( "ControlLib" , "lib" )]
    line 2: namespace ControlLib
    line 3: {
    line 4: [DefaultProperty( "BackColorOn" ),
    line 5: ToolboxData( "<{0}:PimpedOutTextbox runat=server></{0}:PimpedOutTextbox>" )]
    line 6: public class PimpedOutTextbox : System.Web.UI.WebControls.TextBox
    line 7: {


      在一开始,增加了assembly属性,其目的是,当在vs.net中拖拉该控件时,VS.net会自动添加Tagprefix的控件标记。在pimedouttexbox类中,增加了几个属性:defaultproperty和toolboxdata.defaultproperty中的属性backcoloron的含义是,当把该控件从VS.NET的工具箱拖拉到设计器时,该控件中被默认选定的属性。Toolboxdata属性是和[assembly:Tagprefix]属性相关,用来表明该控件是如何从HTML视图中产生的。这些属性将在下文详细讲解。

      最后,在第6行,注意 public class PimpedOutTextbox : System.Web.UI.WebControls.TextBox 一句,其中表明这个控件是比原来的文本框控件增加了新的行为。总的来说,我们创建的这个控件依然是一个文本框控件,只不过是继承了原有文本框控件的属性和行为,并且有自己的新的属性而已。

      下一步,将给pimedouttextbox控件新增两个属性。其中,我们设想,当用户在文本框中输入或者文本框获得焦点时,文本框的颜色有变化,所以命名新的属性BackColoron;当控件失去焦点时,文本框的颜色命名为backcoloroff。

    line 1: private Color _colOff;
    line 2: [Category( "Appearance" ), Description( "The background color when the control loses focus" )]
    line 3: public Color BackColorOff
    line 4: {
    line 5: get{return _colOff;}
    line 6: set{_colOff = value
    line 7: }
    line 8: private Color _colOn;
    line 9: [Category( "Appearance" ), Description( "The background color when the control has the focus" )]
    line 10: public Color BackColorOn
    line 11: {
    line 12: get{return _colOn; }
    line 13: set{_colOn = value;}
    line 14: }


      上面的代码,是典型的对属性的赋值和存取的语句了,相信大家都很熟悉了。要提及一点的是,第2行和第9行的category和descriptiton属性,是该控件的属性窗口中,对backcoloron和backcoloroff两个属性的一个描述。注意,我们使用了color类,这样比较方便,可以用vs.net自带的颜色选择器,而不用输入颜色的十六进制值。

      接着,下面是比较重要的部分。在这个新的控件, 我们将用重载一个AddAttributesToRender()的方法输出新的内容到浏览器中。其中,将加入对客户端的onfocus和onblur事件的响应。另外,要注意的是,当在VS.NET创建该控件时,会自动调用该方法,所以我们可以在设计期间对其中的属性进行设置。

    line 1: protected override void AddAttributesToRender( HtmlTextWriter writer )
    line 2: {
    line 3: base.AddAttributesToRender( writer );
    line 4: //only add the client-side javascript for design mode or IE
    line 5: if( inDesignMode() || System.Web.HttpContext.Current.Request.Browser.Type.IndexOf( "IE" ) > -1 )
    line 6: {
    line 7: writer.AddAttribute( "onFocus", "JavaScript:this.style.backgroundColor='" + ColorTranslator.ToHtml( _colOn ) + "';" );
    line 8: if( _colOff.Equals( Color.Empty ) )
    line 9: {
    line 10: _colOff = this.BackColor;
    line 11: }
    line 12: writer.AddAttribute( "onBlur", "JavaScript:this.style.backgroundColor='" + ColorTranslator.ToHtml( colOff ) + "';" );
    line 13: }
    line 14: }


      其中第3行的目的是,调用基类,继承原有的文本框的属性。AddAttributesToRender的方法使用HtmlTextWriter流作为参数。在第9,第12行,分别通过调用HTML文本流的AddAttribute方法增加其客户端的输出。其中传入了两个参数,第一个参数是HTML的属性,第二个是属性对应的值。它们经过浏览器输出后,变为<input type="text" onBlur="JavaScript...">的形式。

      因为浏览器使用的是十六进制的颜色,所以我们采用ColorTranslator类去将.NET的颜色类型转换为浏览器中能识别的颜色类型(第7和第12行)。在第8行,先检查_coloroff属性是否没被赋值,如果没赋值,则backcoloroff的颜色设置为原来文本框的背景色。

      而在第5行,我们检查浏览器的类型是否支持onfocus和onblur事件,并且由于想在VS.NET的设计时就能对控件的属性进行改变,所以增加了一个判断的函数indesignmode:

    line 1: private bool inDesignMode()
    line 2: {
    line 3: bool blnOut = false;
    line 4: if( object.ReferenceEquals( System.Web.HttpContext.Current, null ) )
    line 5: {
    line 6: blnOut = true;
    line 7: }
    line 8: else
    line 9: {
    line 10: blnOut = false;
    line 11: }
    line 12: return blnOut;
    line 13: }


      在上面代码的第4行,通过判断如果HttpContext实例是否为null,如果为null的话,则证明当前是处于VS.NET的设计模式下,没响应HTTP请求。接下来,我们测试一下所做的控件。

      首先,我们编译做好的控件工程,之后,我们在ASP.NET的工程中,加入刚做好的控件。方法是,鼠标右键点击webapplication中的增加引用,其中选择刚才编译好的控件库目录中的dll文件即可。再在vs.net的工具箱中,同样增加新的项,选择刚做好的控件库目录中的dll,这时,你会发现在工具箱中多了刚才做的pimedouttextbox。如下图:

    用ASP.NET创建自定义文本框



      接着,从工具箱中将我们做的控件拖拉到页面中来。注意,这个时候该控件的属性页中,会自动定位在BackColoron属性中。这是因为之前我们设置了DefaultProperty属性。同时注意该属性下的说明文字,这是因为设置了description属性。再切换到HTML视图中去,你会看到

    <%@ Register TagPrefix="lib" Namespace="ControlLib" Assembly="ControlLib" %>


      这是由于之前对

    [assembly: TagPrefix ( "ControlLib" , "lib" )]


      的定义而产生的。

      再切换回设计视图,将该文本框控件的颜色设置为灰色,会发现同时backcoloroff也同样设置为同样的颜色了,因为之前backcoloroff是没有被赋值的。再改变文本框的背景色,这是会发现backcoloroff的值没变化了,因为这个时候backcoloroff的值已经不是空值了(具体可以再看上文的代码)。接下来,将文本框的背景颜色设置为除白色外的任一种颜色,运行程序。结果时,当该文本框控件获得焦点时,文本框的颜色以backcoloron的颜色显示,当文本框失去焦点时,文本框的颜色以backcoloroff显示。

      如果你想对客户端的代码进行单步跟踪,可以将debugger;加入到要调试的javascript语句中去,如

    JavaScript:debugger;this.style.backgroundColor='blue';


      运行程序,则可以通过监视窗口监视相关的变量,如输入document.forms[0].all[1].name等。

      以上只是简单介绍了asp.net中如何创建自定义的控件,相信读者会有所启发。程序可以在vs.net 2002,2003上调试运行。

    <script language='javascript' src='http://www.shiqiaotou.com/donetk/Footer.js'></script>
    展开全文
  • 创建数字文本框

    2009-12-12 16:18:00
    MSDN上提供了方案:如何创建数字文本框,它重载了TextBox类。当然,你也可以重写该控件而不继承任何Control类,那样在外观上效果更好。MSDN上主要是做了非数字的处理,数字,逗号(可以指定),小数点,退格键和空格...


     MSDN上提供了方案: 如何:创建数字文本框,它重载了TextBox类。

    当然,你也可以重写该控件而不继承任何Control类,那样在外观上效果更好。 

    MSDN上主要是做了非数字的处理,数字,逗号(可以指定),小数点,退格键和空格键是被允许输入的,当然也可以添加Ctrl和Alt组合键。当然,如果要使用还需要做进一步的处理,比如, 输入的字符串是否合理。

     

     以下为代码片段 

    ExpandedBlockStart.gifNumericTextBox
    public class NumericTextBox : TextBox
    {
        
    bool allowSpace = false;

        
    // Restricts the entry of characters to digits (including hex), the negative sign,
        
    // the decimal point, and editing keystrokes (backspace).
        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            
    base.OnKeyPress(e);

            NumberFormatInfo numberFormatInfo 
    = System.Globalization.CultureInfo.CurrentCulture.NumberFormat;
            
    string decimalSeparator = numberFormatInfo.NumberDecimalSeparator;
            
    string groupSeparator = numberFormatInfo.NumberGroupSeparator;
            
    string negativeSign = numberFormatInfo.NegativeSign;

            
    string keyInput = e.KeyChar.ToString();

            
    if (Char.IsDigit(e.KeyChar))
            {
                
    // Digits are OK
            }
            
    else if (keyInput.Equals(decimalSeparator) || keyInput.Equals(groupSeparator) ||
             keyInput.Equals(negativeSign))
            {
                
    // Decimal separator is OK
            }
            
    else if (e.KeyChar == '\b')
            {
                
    // Backspace key is OK
            }
            
    //    else if ((ModifierKeys & (Keys.Control | Keys.Alt)) != 0)
            
    //    {
            
    //     // Let the edit control handle control and alt key combinations
            
    //    }
            else if (this.allowSpace && e.KeyChar == ' ')
            {

            }
            
    else
            {
                
    // Swallow this invalid key and beep
                e.Handled = true;
                
    //    MessageBeep();
            }
        }

        
    public int IntValue
        {
            
    get
            {
                
    return Int32.Parse(this.Text);
            }
        }

        
    public decimal DecimalValue
        {
            
    get
            {
                
    return Decimal.Parse(this.Text);
            }
        }

        
    public bool AllowSpace
        {
            
    set
            {
                
    this.allowSpace = value;
            }

            
    get
            {
                
    return this.allowSpace;
            }
        }
    }

     

      

    转载于:https://www.cnblogs.com/Lisen/archive/2009/12/12/1622555.html

    展开全文
  • 您还可以创建一个通用行为,可以轻松应用于应用程序中的任何文本框.这是一个示例行为类: –public class TextBoxEnterKeyUpdateBehavior : Behavior{protected override void OnAttached(){if (this.Associated...

    您还可以创建一个通用行为,可以轻松应用于应用程序中的任何文本框.这是一个示例行为类: –

    public class TextBoxEnterKeyUpdateBehavior : Behavior

    {

    protected override void OnAttached()

    {

    if (this.AssociatedObject != null)

    {

    base.OnAttached();

    this.AssociatedObject.KeyDown += AssociatedObject_KeyDown;

    }

    }

    protected override void OnDetaching()

    {

    if (this.AssociatedObject != null)

    {

    this.AssociatedObject.KeyDown -= AssociatedObject_KeyDown;

    base.OnDetaching();

    }

    }

    private void AssociatedObject_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

    {

    TextBox textBox = sender as TextBox;

    if (textBox != null)

    {

    if (e.Key == Key.Return)

    {

    if (e.Key == Key.Enter)

    {

    textBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));

    }

    }

    }

    }

    }

    要在xaml中使用此类,只需将其包含在文本框行为集合中,如下所示: –

    这里“i”指的是System.Windows.Interactivity命名空间.

    展开全文
  • WPF 创建好看的带按钮的文本框 初学WPF,在网上翻了一些资料,发现网上的都是模棱两可的答案。都以创建一个自定义控件的解决方案居多。但是个人觉得这种简单的远远不需要自定义控件如何自己就写了一个,如有不足之...
  • CorelDraw VBA中,如何只允许在文本框中输入数字? 我们可以应用数据验证功能,只允许将数字输入到单元格中,但有时,我只想将数字输入到文本框以及单元格中。... 文本框(ActiveX控件),然后根据需要绘制...
  • 本章主要讲述如何利用文本框控件来控制和操作文本。相应的源代码可以在TX Text Control.NET的安装目录中找到:  Samples\WinForms\VB.NET\ Text Frames  Samples\WinForms\CSharp\ Text Frames 第一步:...
  • 本文演示如何动态创建控件的.aspx 页。 示例项目执行以下操作: 创建两个 文本框 控件。 请验证内容 (TextBox.text) 和 TextBox 的属性保存在发送到服务器。 说明了由动态创建控件过帐的处理事件。创建项目和静态...
  • 本文通过java代码示例介绍如何在excel表格中添加表单控件,包括文本框、单选按钮、复选框、组合框、微调按钮等;以及如何删除excel中的指定表单控件。程序运行环境:java、idea、jdk1.8.0、无需安装microsoft excel...
  • 下面通过自定义一个带有标签的文本框作为例子,看一下如何自定义属性控件: 在webpart项目中创建一个文件夹以及四个文件如下: 首先我们定义这个属性控件的属性,就是在“getPropertyPaneConfiguration”添加...
  • 前言此篇教程将讲解如何添加表格到Word文本框及怎样获取、删除文本框中已有的表格。Free Spire.Doc for Java是此次代码演示所用到的控件。它是一款免费、专业的Java Word组件,开发人员使用它可以轻松地在Java应用...
  • 准备: JTextArea 文本区,一个可以输入文字的文本框 ...JScrollPane 滑动窗格容器,一般放入长度或者宽度特别长的控件,通过滑动来查看控件中由于太长而显示不出来的部分 首先创建一个可以输入文本: ...
  • 前言此篇教程将讲解如何添加表格到Word文本框及怎样获取、删除文本框中已有的表格。Free Spire.Doc for Java是此次代码演示所用到的控件。它是一款免费、专业的Java Word组件,开发人员使用它可以轻松地在Java应用...
  • 在VS2010/MFC中如何对对话框添加控件

    千次阅读 2018-03-18 22:47:37
    创建对话框资源需要创建对话框模板、修改对话框属性、为对话框添加各种控件等步骤。而如何为对话框添加控件直接影响到界面的美观和开发人员的工作效率。本人将为大家介绍如何为对话框添加控件的详细步骤。方法/步骤...
  • 点击“了解更多”获取DevExpress v20.1完整版下载DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。遇到的问题如何在获取c#代码变量,在Skin?中未列出的属性中创建...
  • 问题起因:我利用类似与163添加附加的方法写了个动态添加文本框按钮的一个js代码,其中对于这些控件都没有设置其样式,所以文本框和按钮紧紧靠一起了,美工说这样不好看,...2 接着尝试直接在控件创建的时候设置属性...
  • 后来看zy910写到“由于Edit控件的设定(只能在创建窗口时设置风格,创建后不能修改)所以TextBox的MultiLine屬性实现原理是:先清除原有的Edit,再创建一个新的Edit这在设计时是可行的。但在运行时,会导致文本框...
  • 这些部件包括“用户名”和“密码”文本框、“提交”按钮、用于创建新用户的按钮、“记住我”复选框和用户的帮助信息。您可以通过定义新元素和重用默认组件来定义自己的登录控件用户界面。您还可以自定义 Login 控件...
  •  图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。  图片控件静态和动态加载图片  鸡啄米下面为大家...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 254
精华内容 101
关键字:

如何创建文本框控件