Пользовательский контроль в верхнем регистре - PullRequest
2 голосов
/ 13 июля 2011

Я хочу создать пользовательский элемент управления [текстовое поле], который преобразует весь текст в верхний регистр.На обычной веб-странице я могу сделать это через

<asp:TextBox ID="TextBox1" runat="server">
    </asp:TextBox>

    <style type="text/css">
    #TextBox1
       { 
          text-transform: uppercase; 
       } 
</style>

Я не знаю, как преобразовать их в пользовательский элемент управления и как я могу создать свой собственный элемент управления текстовым полем, который имеет эту функцию в сборке.Так что я могу перетащить их из своего набора инструментов и использовать его.

Любая помощь?

Редактировать

Это было бы так же, как,Я хочу дать еще одно свойство для текстового поля [Допустим, скажем: Uppercase = "True" или Uppercase = "False"], которое будет определять, будет ли символ текстового поля в верхнем регистре или нет.

Редактировать 1

enter image description here

Редактировать 2

   using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace UppercaseBox
{
    public class UppercaseTextBox : System.Web.UI.WebControls.TextBox
    {
        public extern Boolean Uppercase 
        { get; 
          set;
        }
        public override string Text
        {
            get
            {
                return Uppercase && !string.IsNullOrEmpty(base.Text) ? base.Text.ToUpper() : base.Text;
            }
            set
            {
                base.Text = Uppercase && !string.IsNullOrEmpty(value) ? value.ToUpper() : value; ;
            }
        }
    }
}

enter image description here

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

сначала вы можете использовать web user control содержит только одно свойство TextBox и Boolean, называемое UpperCase

код позади

public Boolean UpperCase
{
    get;
    set;
}

.aspx

<%if(UpperCase) {%>
<style type="text/css">
#TextBox1
   { 
      text-transform: uppercase; 
   } 
</style>
<%} %>

на вашей странице добавьте этот элемент управления

<uc1:TextControl ID="TextControl1" runat="server" UpperCase="false"/>

Уведомление

Iиспользуется ClientIDMode="static", чтобы сохранить ID из TextBox как есть, это будет работать, если вы используете ASP.Net 4.0, если вы этого не сделаете, вам придется использовать свойство ClientID TextBox, чтобы применить стильчто-то в этом роде

  <%if(UpperCase) {%>
<style type="text/css">
#<%=TextBox1.ClientID%>
   { 
      text-transform: uppercase; 
   } 
</style>
<%} %>
2 голосов
/ 13 июля 2011

Более простой способ, который я вижу, состоит в том, что вы можете создать пользовательский элемент управления, наследующий от TextBox, и переопределить свойство Text, чтобы оно изменяло текст в верхний регистр.

Public Class UppertextBox
        Inherits Web.UI.WebControls.TextBox

        Public Overrides Property Text As String
            Get
                Return MyBase.Text.ToUpper
            End Get
            Set(ByVal value As String)
                MyBase.Text = value.ToUpper ' no check for null, add it if necessary
            End Set
        End Property

    End Class

Верхний регистр может зависеть от свойства вашего элемента управления, чтобы вы могли настраивать текстовое поле на странице, используя его.

Public Class UppertextBox
        Inherits Web.UI.WebControls.TextBox

        Public Property Uppercase As Boolean

        Public Overrides Property Text As String
            Get
                If Uppercase AndAlso Not String.IsNullOrEmpty(MyBase.Text) Then
                    Return MyBase.Text.ToUpper
                Else
                    Return MyBase.Text
                End If
            End Get
            Set(ByVal value As String)
                If Uppercase AndAlso Not String.IsNullOrEmpty(value) Then
                    MyBase.Text = value.ToUpper
                Else
                    MyBase.Text = value
                End If

            End Set
        End Property

    End Class

Ваш унаследованный элемент управления также может установить его стиль в верхний регистр, но я бы порекомендовал альтернативно использовать темы, если вы не хотите задавать стиль при каждом использовании

EDIT

C # версия будет выглядеть как

public class UppercaseTextBox : System.Web.UI.WebControls.TextBox
    {
        public Boolean Uppercase { get; set; }
        public override string Text
        {
            get
            {
                return Uppercase && !string.IsNullOrEmpty(base.Text) ? base.Text.ToUpper() : base.Text;
            }
            set
            {
                base.Text = Uppercase && !string.IsNullOrEmpty(value) ? value.ToUpper() : value;
            }
        }
    }
0 голосов
/ 13 июля 2011

использовать таблицу стилей ..

входной [тип = текст] {

преобразование текста: заглавные буквы; }

простой способ создания эффекта во всех текстовых полях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...