GrapeCity InputMan for Windows Forms 11.0J 移行ガイド
数値コントロール

4.0J 以前のバージョンからの移行で、移行ツール実行後に手動での変更が必要な数値コントロールのメンバや機能については以下のとおりです。

DisplayFormat プロパティ

このプロパティは、4.0J 以前のバージョンでは NumberFormat クラスのメンバでしたが、NumberDisplayFormat クラスのメンバに変更されました。手動で「Number1.DisplayFormat = New GrapeCity.Win.Input.Interop.NumberDisplayFormat(…」のように書き換えが必要です。

DefaultDisplayFormat プロパティ

このプロパティは、4.0J 以前のバージョンでは NumberFormat クラスのメンバーでしたが、NumberDisplayFormat クラスのメンバーに変更されました。手動で「NumberDisplayFormat.DefaultDisplayFormat」のように書き換えが必要です。

DropDown プロパティ

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 プロパティに設定する 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;
KeyDown イベント

内部で動作している 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("マイナスキー");
  }
}
関連トピック

 

 


© 2004 GrapeCity inc. All rights reserved.