SPREAD for Windows Forms 控制输入法

    enc = System.Text.Encoding.GetEncoding("shift-jis")
    datamodel = CType(FpSpread1.ActiveSheet.Models.Data, Model.DefaultSheetDataModel)

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

    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).GetCellType(e.Row, e.Column)) Is CellType.TextCellType Then
                    Dim tCell As CellType.TextCellType = CType(FpSpread1.Sheets(0).GetCellType(e.Row, e.Column), CellType.TextCellType)
                    Dim s As String = CStr(datamodel.GetValue(e.Row, e.Column))
                    If enc.GetByteCount(s) > tCell.MaxLength Then
                        s = enc.GetString(enc.GetBytes(s), 0, tCell.MaxLength)
                        If enc.GetByteCount(s) > tCell.MaxLength Then
                            s = enc.GetString(enc.GetBytes(s), 0, tCell.MaxLength - 1)
                        Else
                            s = enc.GetString(enc.GetBytes(s), 0, tCell.MaxLength)
                        End If
                        datamodel.SetValue(e.Row, e.Column, s)
                    End If
                End If
            Catch
            End Try
            SwData = 1
        End If
    End Sub

    Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
        If TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.CurrencyCellType _
            Or TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.NumberCellType Then
            FpSpread1.EditingControl.ImeMode = Windows.Forms.ImeMode.Off
        ElseIf TypeOf (FpSpread1.ActiveSheet.GetCellType(iRow, iCol)) Is FarPoint.Win.Spread.CellType.TextCellType Then
            FpSpread1.EditingControl.ImeMode = Windows.Forms.ImeMode.Hiragana
        End If
    End Sub

    Private Sub FpSpread1_EditChange(ByVal sender As System.Object, ByVal e As FarPoint.Win.Spread.EditorNotifyEventArgs) Handles FpSpread1.EditChange
        ' 編集中の入力制御
        Try
            ' テキスト型セルの場合
            If TypeOf e.View.GetSheetView.GetCellType(e.Row, e.Column) Is CellType.TextCellType Then
                Dim tCell As CellType.TextCellType = CType(e.View.GetSheetView.GetCellType(e.Row, e.Column), CellType.TextCellType)
                Dim s As String = e.EditingControl.Text
                If enc.GetByteCount(s) > tCell.MaxLength Then
                    Dim chrs As Char() = enc.GetChars(enc.GetBytes(s), 0, tCell.MaxLength)
                    If Not Char.IsLetter(chrs(chrs.Length - 1)) Then
                        Array.Resize(chrs, chrs.Length - 1)
                    End If
                    e.EditingControl.Text = String.Concat(chrs)
                    CType(e.EditingControl, CellType.GeneralEditor).SelectionStart = e.EditingControl.Text.Length
                End If
            End If
        Catch
        End Try

    End Sub

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值