814466854 发表于 2013-11-21 19:20:00

设置cell的可输入位数的问题

我想在CellBeginEdit的时候改变某个cell的可输入位数,在代码里应该怎么写?

wedy.wang 发表于 2013-11-22 09:33:00

看你具体用的什么Cell,如果是TextBoxCell,请设置MaxLength属性,就好了。

814466854 发表于 2013-11-22 10:59:00

回复 2楼wedy.wang的帖子


是TextBoxCell,现在就是编辑状态下只能输入6位,但表示的时候要8位表示,在Form代码中CurrentCell没有MaxLength的属性,只能在模板代码里写了方法调用了但还是表示了6位,求教啊~~



wedy.wang 发表于 2013-11-22 11:15:00

请使用下面的方法尝试一下:
Step1: 在Template当中设置TextBoxCell.MaxLength= 6
Step2:在Form中,处理GcMultiRow.CellFormatting事件,事件处理函数像下面一样:
       private void gcMultiRow1_CellFormatting(object sender, GrapeCity.Win.MultiRow.CellFormattingEventArgs e)
      {
            if (e.CellName == "textBoxCell1")
            {
                if (e.Value != null)
                {
                  e.Value = e.Value + "12";
                }
            }
      }

这样处理之后,在编辑状态最多输入6个字符,显示的时候可以多显示一个“12”,你根据自己的需求决定如何改造上面的处理函数吧。

814466854 发表于 2013-11-22 13:57:00

版主,我试了,输入的时候还是可以输入8位的,可以把你的DEMO发我看看吗?

wedy.wang 发表于 2013-12-2 10:23:00

不好意思,回复晚了。
请确保你已经在Template当中给Cell设置了MaxLength为6.
然后,请看下面的代码:
public partial class Form1 : Form
    {
      public Form1()
      {
            InitializeComponent();

            this.gcMultiRow1.CellFormatting += gcMultiRow1_CellFormatting;
            this.gcMultiRow1.EditingControlShowing += gcMultiRow1_EditingControlShowing;
      }

      void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
      {
            if (this.gcMultiRow1.CurrentCellPosition.CellName == "textBoxCell1")
            {
                TextBox textBox = e.Control as TextBox;
                if (e.Control.Text.Length > textBox.MaxLength)
                {
                  int removeLength = e.Control.Text.Length - textBox.MaxLength;
                  e.Control.Text = e.Control.Text.Remove(textBox.MaxLength, removeLength);//确保编辑状态为6位。
                }
            }
      }
      void gcMultiRow1_CellFormatting(object sender, GrapeCity.Win.MultiRow.CellFormattingEventArgs e)
      {
            if (e.CellName == "textBoxCell1")
            {
                if (e.Value != null)
                {
                  e.Value = e.Value + "12";//增加两位
                }
            }
      }
    }

814466854 发表于 2013-12-4 15:08:00

问题已解决,感谢版主!
页: [1]
查看完整版本: 设置cell的可输入位数的问题