willsHuang 发表于 2015-10-14 11:32:00

限制TextBoxCell輸入字元內容

我們使用 GcMultiRow 8.20.20143.0,剛剛開始學習使用,
請問一下,TextBoxCell 如何能限制使用者輸入的字元:
1.英文字元:A-Z/a-z
2.數字字元:0-9
3.英文或數字字元:A-Z/a-z/0-9

初學者,請多多指教,感恩

Carl 发表于 2015-10-14 14:20:00

通过设置GcTextBoxCell的Format属性控制,不是TextBoxCell。
可以在设计器里直接选择你要的字符,也可以通过代码设置,具体可以参考帮助手册和Demo。

willsHuang 发表于 2015-10-14 16:26:00

回复 2楼Carl的帖子

附件是我的Visual Studio設計畫面,
在ToolBox中並沒看到您所提的GcTextBoxCell,



向您再說明一次,我們是使用,GrapeCity.Win.MultiRow.GcMultiRow
並 使用 GrapeCity.Win.MultiRow.TextBoxCell。

如果您方便的話,能否提供一下,線上的参考帮助手册和Demo,
因為我所安裝的手冊及Demo中也沒找到 GcTextBoxCell ....?

麻煩您了...

Alice 发表于 2015-10-15 09:34:00

回复 3楼willsHuang的帖子

谢谢你的反馈。
MultiRow除了可以使用标准的单元格类型(比如TextBxoCell)之外,还可以使用其他种类的(Inputman和PlusPak,我们公司的其他控件产品)的单元格类型,其中Inputman中的控件就包含GcTextBoxCell。

这也是需要购买Inputman的授权才可以使用的控件。

对于标准的TextBox,只能通过MaxLength属性来控制长度,如果想对内容进行控制,只能写代码实现。在EditingControlShowing事件中,可以拿到标准的TextBox,然后写代码去控制输入的值。

如果使用GcTextBoxCell单元格类型,因为就存在Format属性,直接设置属性就可以实现。

希望以上,对你有帮助。

willsHuang 发表于 2015-10-15 11:49:00

感謝您的協助,

為了讓我們公司能進行評估是否採購Inputman 和 PlusPak 授权,
請問我要如何得到下列資訊呢?
1. Inputman 和 PlusPak 授权費用。
2. Inputman 和 PlusPak 所提供的功能是否能有相關文件說明 及 提供先行測試使用看看呢 ?

以上,麻煩您, 指導一下,

謝謝

Alice 发表于 2015-10-15 12:30:00

回复 5楼willsHuang的帖子

谢谢反馈。
从你的描述来看,你有InputmanCell的需求,但是需求的普遍性等问题我还需要和您确认,才能帮助你评估哪种方案比较合适。
请站内短消息,将您的电话发给我,我们沟通下这个问题。

Carl 发表于 2015-10-15 16:50:00

如果用TextBoxCell,可以试一下这样:

      private void Form1_Load(object sender, EventArgs e)
      {
            this.gcMultiRow1.EditingControlShowing += gcMultiRow1_EditingControlShowing;
      }

      void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
      {
            if (e.Control is TextBoxEditingControl)
            {
                (e.Control as TextBoxEditingControl).KeyPress += Form1_KeyPress;
            }
      }

      void Form1_KeyPress(object sender, KeyPressEventArgs e)
      {
            if ((Control.ModifierKeys & (Keys.Control | Keys.Alt)) ==Keys.None)
            {
                if (e.KeyChar < '0' || e.KeyChar > '9')
                {
                  e.Handled = true;
                }
            }
      }


willsHuang 发表于 2015-10-16 17:36:00

OK了,感謝您的支持。

Alice 发表于 2015-10-19 10:14:00

回复 8楼willsHuang的帖子

不用客气。
非常感谢您的反馈。
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢      http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062

willsHuang 发表于 2015-10-21 09:50:00

Dear 版主:

由於我的工作是開發控件給應用程式員使用,經幾日進一步研究GcMultiRow文件後,
找到下列方式來控制 TextBoxCell 鍵盤的輸入限制。

1.新增一個Custom EditingControl 繼承自 TextBoxEditingControl,並加入處理 KeyPress 事件,來過濾鍵盤輸入。
程式碼如下:
GUIDigitalEditingControl.vb

Imports System.ComponentModel
Imports GrapeCity.Win.MultiRow

<EditorBrowsable(EditorBrowsableState.Advanced), ToolboxItem(False)>
Public Class GUIDigitalEditingControl
    Inherits TextBoxEditingControl

    Private Sub GUIDigitalEditingControl_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) _
      Handles Me.KeyPress
                If Char.IsControl(e.KeyChar) OrElse Char.IsDigit(e.KeyChar) Then
                        e.Handled = False
                Else
                        e.Handled = True
                End If
    End Sub

End Class

2.新增一個Custom Cell 繼承自 TextBoxCell,並 覆寫 EditType Property 設定為 GUIDigitalEditingControl。
程式碼如下:
GUIDigitalCell.vb

Imports System.ComponentModel
Imports GrapeCity.Win.MultiRow
Imports System.Windows.Forms

Public Class GUIDigitalCell
    Inherits TextBoxCell

    Public Overrides ReadOnly Property EditType() As Type
      Get
            Return GetType(GUIDigitalEditingControl)
      End Get
    End Property

End Class

3.在 Visual Studio IDE 的 Template 設計畫面上新增 GUIDigitalCell 到您想放置的位置。

如此,也可達成相同的目的,而且後續應用程式員只要引用即可該Cell即可,
不須再 MultiRow 的 EditingControlShowing 重複相同的Code。

由於,是初次使用 MultiRow 將此方式說明一下,還請版主指導一下。

謝謝
页: [1] 2
查看完整版本: 限制TextBoxCell輸入字元內容