找回密码
 立即注册

QQ登录

只需一步,快速开始

wdtlcv

初级会员

21

主题

58

帖子

431

积分

初级会员

积分
431

活字格认证微信认证勋章

wdtlcv
初级会员   /  发表于:2015-12-31 10:52  /   查看:2828  /  回复:1
由于项目需要写了如下VB.NET的代码:
首先在Form_Load事件中设置了FlexGrid的第二列的DataTyle为Long类型,同时设置该列剧中对齐(CenterCenter)代码如下:

  1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  2.     Me.C1FlexGrid1.Cols(1).DataType = GetType(Long)
  3.     Me.C1FlexGrid1.Cols(1).TextAlign = C1.Win.C1FlexGrid.TextAlignEnum.CenterCenter
  4. End Sub
复制代码


注意:由于上面代码设置了居中对齐,这会导致FlexGrid在单元格中输入的数字过长时会折行(当前列宽度小,但是输入的数字超过列宽时如果继续输入会折行,在不调整行高的情况下此时看不到上面输入的数字了,很不方便)为了解决输入折行问题在FlexGrid的SetupEditor事件中添加了如下代码:
  1. Private Sub C1FlexGrid1_SetupEditor(sender As Object, e As C1.Win.C1FlexGrid.RowColEventArgs) Handles C1FlexGrid1.SetupEditor
  2.     CType(Me.C1FlexGrid1.Editor, TextBox).Multiline = False
  3. End Sub
复制代码


上面的代码主要是不让其折行显示(根据我的实验,当列的TextAlign枚举值为CenterXXX或者RightXXX的时候都会折行,其他枚举类型时则不会折行,这是为什么?)


按照上面的代码接下来发现了一个有意思的事情:当前列不折行了,但是当输入的数字为1位时,后面的数字不能够替代前面的数字,例如,第一次我在单元格上输入一个数字“1”,焦点离开之后
我再次点击该单元格输入一个数字“2”,此时焦点再离开后,该单元格仍然显示1,原先输入的“2”没有了。总之只要是输入一位的数字,后面输入的不能够替换掉第一次输入的。
但是更有意思的是如果我输入的数字位数为2位或者更多时就不会存在这个问题了,输入“11”就可以替换掉原来的1了。


目前我做的项目由于此问题产生了较大范围的BUG,所以想确认一下
1:这个现象是不是FlexGrid的BUG?
2:我如果想实现上面所写的功能(数值类型列,居中对齐显示,输入时不折行)有没有其他更好的办法?

1 个回复

倒序浏览
gw0506
超级版主   /  发表于:2016-3-15 18:09:54
沙发
你好,我从论坛的过滤删除列表中找回了这个帖子。
我想跟你确认一下这个问题是否已经解决?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部