【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
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
本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。 |