InputMan for Windows Forms 11.0J 移行ガイド > 4.0J 以前のバージョンからの移行 > 移行後に必要な修正 > 数値コントロール |
4.0J 以前のバージョンからの移行で、移行ツール実行後に手動での変更が必要な数値コントロールのメンバや機能については以下のとおりです。
このプロパティは、4.0J 以前のバージョンでは NumberFormat クラスのメンバでしたが、NumberDisplayFormat クラスのメンバに変更されました。手動で「Number1.DisplayFormat = New GrapeCity.Win.Input.Interop.NumberDisplayFormat(…」のように書き換えが必要です。
このプロパティは、4.0J 以前のバージョンでは NumberFormat クラスのメンバーでしたが、NumberDisplayFormat クラスのメンバーに変更されました。手動で「NumberDisplayFormat.DefaultDisplayFormat」のように書き換えが必要です。
DropDown プロパティに設定する DropDown オブジェクトでは、FlatStyle プロパティは提供されません。ボタンの外観はコントロールの外観と常に一致します。警告が発生した状態でも動作しますが、警告を消す場合には FlatStyle プロパティの部分を削除します。
' ≪修正前≫ Me.Number1.DropDown = New GrapeCity.Win.Input.Interop.DropDown(GrapeCity.Win.Input.Interop.ButtonPosition.Outside, True, GrapeCity.Win.Input.Interop.Visibility.ShowAlways, _ System.Windows.Forms.FlatStyle.System) ' ≪修正後≫ Me.Number1.DropDown = New GrapeCity.Win.Input.Interop.DropDown(GrapeCity.Win.Input.Interop.ButtonPosition.Outside, True, GrapeCity.Win.Input.Interop.Visibility.ShowAlways)
// ≪修正前≫ this.number1.DropDown = new GrapeCity.Win.Input.Interop.DropDown(GrapeCity.Win.Input.Interop.ButtonPosition.Outside, true, GrapeCity.Win.Input.Interop.Visibility.ShowAlways, System.Windows.Forms.FlatStyle.System); // ≪修正後≫ this.number1.DropDown = new GrapeCity.Win.Input.Interop.DropDown(GrapeCity.Win.Input.Interop.ButtonPosition.Outside, true, GrapeCity.Win.Input.Interop.Visibility.ShowAlways);
Spin プロパティに設定する Spin オブジェクトでは、FlatStyle プロパティは提供されません。スピンボタンの外観はコントロールの外観と常に一致します。警告が発生した状態でも動作しますが、警告を消す場合には Spin オブジェクトを作成し設定します。
' ≪修正前≫ Me.Number1.Spin = New GrapeCity.Win.Input.Interop.Spin(0, 1, True, True, GrapeCity.Win.Input.Interop.ButtonPosition.Outside, True, _ GrapeCity.Win.Input.Interop.Visibility.ShowAlways, System.Windows.Forms.FlatStyle.System) ' ≪修正後≫ Dim Spin1 As GrapeCity.Win.Input.Interop.Spin = New GrapeCity.Win.Input.Interop.Spin Spin1.Delay = 0 Spin1.Increment = 1 Spin1.SpinOnKeys = True Spin1.Wrap = True Spin1.Position = GrapeCity.Win.Input.Interop.ButtonPosition.Outside Spin1.Enabled = True Spin1.Visible = GrapeCity.Win.Input.Interop.Visibility.ShowAlways Me.Number1.Spin = Spin1
// ≪修正前≫ this.number1.Spin = new GrapeCity.Win.Input.Interop.Spin(0, 1, true, true, GrapeCity.Win.Input.ButtonPosition.Outside, true, GrapeCity.Win.Input.Interop.Visibility.ShowAlways, System.Windows.Forms.FlatStyle.System); // ≪修正後≫ GrapeCity.Win.Input.Interop.Spin spin1 = new GrapeCity.Win.Input.Interop.Spin(); spin1.Delay = 0; spin1.Increment = 1; spin1.SpinOnKeys = true; spin1.Wrap = true; spin1.Position = GrapeCity.Win.Input.Interop.ButtonPosition.Outside; spin1.Enabled = true; spin1.Visible = GrapeCity.Win.Input.Interop.Visibility.ShowAlways; this.number1.Spin = spin1;
内部で動作している 11.0J のコントロールでは、数値コントロールのマイナスキーに対して新しくショートカット機能が追加されています。これはマイナスキー押下時の動作を旧バージョンと同じスイッチ機能とするだけではなく、マイナスはマイナスキーとして扱う機能が追加されたためです。ショートカット機能が追加されたキーは KeyDown イベントよりも優先されて処理が行われるため、ラッパーコントロールのマイナスキーでは KeyDown イベントが発生しません。マイナスキーを押されたときに処理を行う場合には、以下のように記述する必要があります。
旧バージョンと同様、マイナスキーをスイッチ機能とする場合
フォームにショートカットコンポーネントを新たに追加し、マイナスキー押下時の処理を追加した独自のショートカット機能を設定します。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ラッパーコントロールのショートカット機能を削除します。 Dim pi As System.Reflection.PropertyInfo = GetType(GrapeCity.Win.Input.Interop.ControlBase).GetProperty("GCSHORTCUT", (System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Static)) If (Not pi Is Nothing) Then Dim instance As GrapeCity.Win.Editors.GcShortcut = TryCast(pi.GetValue(Me.Number1, Nothing), GrapeCity.Win.Editors.GcShortcut) If (Not instance Is Nothing) Then instance.GetShortcuts(Me.Number1.InnerEditor).Remove(Keys.OemMinus) instance.GetShortcuts(Me.Number1.InnerEditor).Remove(Keys.Subtract) End If End If ' マイナスキー押下時の動作を追加したショートカット機能を新しいショートカットコンポーネントに設定します。 Me.GcShortcut1.GetShortcuts(Me.Number1.InnerEditor).Add(Keys.OemMinus, New MethodInvoker(AddressOf Me.ShortcutAction)) Me.GcShortcut1.GetShortcuts(Me.Number1.InnerEditor).Add(Keys.Subtract, New MethodInvoker(AddressOf Me.ShortcutAction)) End Sub Public Sub ShortcutAction() Dim gcNumber As GrapeCity.Win.Editors.GcNumber = TryCast(Me.ActiveControl, GrapeCity.Win.Editors.GcNumber) If gcNumber IsNot Nothing Then gcNumber.SwitchSign() ' ' ここにマイナスキー押下時の処理を記述します。 ' System.Diagnostics.Debug.WriteLine("マイナスキー") End If End Sub
public Form1() { InitializeComponent(); // ラッパーコントロールのショートカット機能を削除します。 System.Reflection.PropertyInfo pi = typeof(GrapeCity.Win.Input.Interop.ControlBase).GetProperty("GCSHORTCUT", (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)); if (((pi != null))) { GrapeCity.Win.Editors.GcShortcut instance = pi.GetValue(this.number1, null) as GrapeCity.Win.Editors.GcShortcut; if (((instance != null))) { instance.GetShortcuts(this.number1.InnerEditor).Remove(Keys.OemMinus); instance.GetShortcuts(this.number1.InnerEditor).Remove(Keys.Subtract); } } // マイナスキー押下時の動作を追加したショートカット機能を新しいショートカットコンポーネントに設定します。 this.gcShortcut1.GetShortcuts(this.number1.InnerEditor).Add(Keys.OemMinus, new MethodInvoker(this.ShortcutAction)); this.gcShortcut1.GetShortcuts(this.number1.InnerEditor).Add(Keys.Subtract, new MethodInvoker(this.ShortcutAction)); } public void ShortcutAction() { GrapeCity.Win.Editors.GcNumber gcNumber = this.ActiveControl as GrapeCity.Win.Editors.GcNumber; if (gcNumber != null) { gcNumber.SwitchSign(); // // ここにマイナスキー押下時の処理を記述します。 // System.Diagnostics.Debug.WriteLine("マイナスキー"); } }
マイナスはマイナス、プラスはプラスに変更する動作とする場合
ショートカット機能を削除することでスイッチ機能が無効となり、かつ KeyDown イベントが発生するようになります。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' ラッパーコントロールのショートカット機能を削除します。 Dim pi As System.Reflection.PropertyInfo = GetType(GrapeCity.Win.Input.Interop.ControlBase).GetProperty("GCSHORTCUT", (System.Reflection.BindingFlags.NonPublic Or System.Reflection.BindingFlags.Static)) If (Not pi Is Nothing) Then Dim instance As GrapeCity.Win.Editors.GcShortcut = TryCast(pi.GetValue(Me.Number1, Nothing), GrapeCity.Win.Editors.GcShortcut) If (Not instance Is Nothing) Then instance.GetShortcuts(Me.Number1.InnerEditor).Remove(Keys.OemMinus) instance.GetShortcuts(Me.Number1.InnerEditor).Remove(Keys.Subtract) End If End If End Sub Private Sub Number1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Number1.KeyDown If e.KeyCode = Keys.OemMinus Or e.KeyCode = Keys.Subtract Then ' ' ここにマイナスキー押下時の処理を記述します。 ' System.Diagnostics.Debug.WriteLine("マイナスキー") End If End Sub
public Form1() { InitializeComponent(); // ラッパーコントロールのショートカット機能を削除します。 System.Reflection.PropertyInfo pi = typeof(GrapeCity.Win.Input.Interop.ControlBase).GetProperty("GCSHORTCUT", (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)); if (((pi != null))) { GrapeCity.Win.Editors.GcShortcut instance = pi.GetValue(this.number1, null) as GrapeCity.Win.Editors.GcShortcut; if (((instance != null))) { instance.GetShortcuts(this.number1.InnerEditor).Remove(Keys.OemMinus); instance.GetShortcuts(this.number1.InnerEditor).Remove(Keys.Subtract); } } } private void number1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.OemMinus || e.KeyCode == Keys.Subtract) { // // ここにマイナスキー押下時の処理を記述します。 // System.Diagnostics.Debug.WriteLine("マイナスキー"); } }