zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    洛谷P1724 东风谷早苗
    hdu 1001 Sum Problem
    洛谷 P1006 传纸条
    codevs 6116 区间素数
    LibreOJ #101. 最大流
    洛谷 P1455 搭配购买
    LibreOJ #119. 最短路 (堆优化dijkstra)
    LibreOJ #109. 并查集
    COGS.1200 ganggang的烦恼
    uoj #15. 【NOIP2014】生活大爆炸版石头剪刀布
  • 原文地址:https://www.cnblogs.com/sekihin/p/3274359.html
  • Copyright © 2011-2022 走看看
    Creative Commons License 本作品采用 知识共享署名-非商业性使用 2.5 中国大陆许可协议进行许可。