- - PR -
スプレッドのカスタムセルのキー制御について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-08-16 18:58
お世話になっております。
初めての投稿をさせていただきます。 VB2005、Spread for .Net 2.5J、InputMan for .Net 4.0にて 開発を行っています。 パッチはどれも最新を当てています。 やりたいことは、スプレッドのテキスト型のセルで MaxLengthをバイト指定したいことです。 現在、TextCellTypeを継承したカスタムセルを作成し、 エディタにInputManのEditコントロールを使用することによって回避しています。 ここで問題なのですが、 エディタを変更するとセルが編集モードに切り替わるときに ・1クッション空いてしまう(何かしらキーを打たないと編集モードに切り替わらない かつ 初めのキーは入力されない) ・Enterキーにて次のセルに移動したいが、移動しない。マッピングは編集時、非編集時ともに指定してあります。(非編集モードでは移動する。) この2点がうまくいきません。 どなたかご存知の方ご教授お願いします。 ちなみに、継承セルを作成した理由のひとつとして、 なぜかスプレッドのKeyDownイベントがまったく発生しないということもあります。。。 カスタムセル: Public Class TextBoxCellTypeEx Inherits FarPoint.Win.Spread.CellType.TextCellType Private WithEvents edt As New Edit ''' <summary> ''' セルが編集モードになったときのコントロールを返します。 ''' </summary> ''' <returns>Editコントロール</returns> Public Overrides Function GetEditorControl(ByVal appr As FarPoint.Win.Spread.Appearance, _ ByVal zoom As Single) As System.Windows.Forms.Control Return edt End Function ''' <summary> ''' 編集されたテキストをセルに反映させます。 ''' </summary> ''' <returns></returns> Public Overrides Function GetEditorValue() As Object Return edt.Text End Function ''' <summary> ''' 編集モードのコントロールにセルの値を渡します。 ''' </summary> ''' <param name="value">セルの値。</param> Public Overrides Sub SetEditorValue(ByVal value As Object) edt.Text = value End Sub End Class マッピング: Private Sub frmSpread_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim im As New FarPoint.Win.Spread.InputMap() '/// キー制御(非編集中) im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenFocused) im.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap) im.Put(New Keystroke(Keys.Enter, Keys.Shift), SpreadActions.MoveToPreviousColumnWrap) '/// キー制御(編集中) im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused) im.Put(New Keystroke(Keys.Enter, Keys.None), SpreadActions.MoveToNextColumnWrap) im.Put(New Keystroke(Keys.Enter, Keys.Shift), SpreadActions.MoveToPreviousColumnWrap) End Sub [ メッセージ編集済み 編集者: ほそ 編集日時 2007-08-16 18:59 ] |
|
投稿日時: 2007-08-16 19:24
自己レスです。
エディタにTextBoxをしていた場合、 問題なく動作しました・・・ InputManのコントロールだとうまくいかない・・・っぽい?です。 とりあえずはTextBoxのイベントを使用してバイト数を制限したいと思います。 でも、Editだとうまくいかないのは納得できないので もう少し調べてみたいと思います。 よろしくお願いします! |
1