【Spread Sheet 应用(四)】字节数入力限制

     Imports  FarPoint.Win.Spread

    
Dim  enc  As  System.Text.Encoding
    
Dim   WithEvents  datamodel  As  Model.DefaultSheetDataModel

    
Private   Sub  Form1_Load( ByVal  sender  As   Object ByVal  e  As  System.EventArgs)  Handles   MyBase .Load
      enc 
=  System.Text.Encoding.GetEncoding( " shift-jis " )
      datamodel 
=  FpSpread1.Sheets( 0 ).Models.Data
      
Dim  tCell  As   New  CellType.TextCellType
      tCell.MaxLength 
=   10
      FpSpread1.Sheets(
0 ).Cells( 0 0 ).CellType  =  tCell
    
End Sub

    
Private   Sub  FpSpread1_EditChange( ByVal  sender  As   Object ByVal  e  As  EditorNotifyEventArgs)  Handles  FpSpread1.EditChange
      
' '編集中の入力制御
       Try
        
If   TypeOf  (e.View.GetSheetView.ActiveCell.CellType)  Is  CellType.TextCellType  Then
          
Dim  tCell  As  CellType.TextCellType  =  e.View.GetSheetView.ActiveCell.CellType
          
Dim  s  As   String   =  e.EditingControl.Text
          
If  enc.GetByteCount(s)  >  tCell.MaxLength  Then
            e.EditingControl.Text 
=  enc.GetString(enc.GetBytes(s),  0 , tCell.MaxLength)
            
CType (e.EditingControl, CellType.GeneralEditor).SelectionStart  =  e.EditingControl.Text.Length
          
End   If
        
End   If
      
Catch
      
End   Try
    
End Sub

    
Private   Sub  datamodel_Changed( ByVal  sender  As   Object ByVal  e  As  Model.SheetDataModelEventArgs)  Handles  datamodel.Changed
      
' '非編集状態でクリップボードから貼り付けした場合
       If  e.Type  =  Model.SheetDataModelEventType.CellsUpdated  Then
        
Try
          
If   TypeOf  (FpSpread1.Sheets( 0 ).ActiveCell.CellType)  Is  CellType.TextCellType  Then
            
Dim  tCell  As  CellType.TextCellType  =  FpSpread1.Sheets( 0 ).ActiveCell.CellType
            
Dim  s  As   String   =  datamodel.GetValue(e.Row, e.Column)
            
If  enc.GetByteCount(s)  >  tCell.MaxLength  Then
              s 
=  enc.GetString(enc.GetBytes(s),  0 , tCell.MaxLength)
              datamodel.SetValue(e.Row, e.Column, s)
            
End   If
          
End   If
        
Catch
        
End   Try
      
End   If
    
End Sub
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值