サポート&サービス

Home > サポート&サービス > テクニカルサポート > ナレッジベース

テクニカルサポート

製品に関する技術的なサービスを提供しています。製品別の技術情報(ナレッジベース)および、対応環境情報をご覧いただけます。また、E-mailによるテクニカルサポートのお申し込みもこちらで受け付けています。

ComponentOne サブスクリプション製品をご購入された方

サブスクリプションにて、ComponentOne製品(ComponentOne Studio、Wijmo、Xuni)をご購入された方は、下記のComponentOne Studioサイトからユーザー登録をお願いいたします。

ComponentOne サブスクリプション製品のユーザー登録を行う

ナレッジベース

Windows 10にFall Creators Updateを適用すると文字入力動作が不正になる
文書番号 : 41462     文書種別 : Info
登録日 : 2017/12/26     最終更新日 : 2017/12/26
文書を印刷する
対象製品
.NET 製品共通
詳細
Windows 10にFall Creators Updateを適用すると、以下のWindowsフォーム用コンポーネントで、セルが非編集の状態から直接キー押下で文字を入力する際の動作が不正になる現象が確認されています。
  • SPREAD for Windows Forms
  • MultiRow for Windows Forms
  • CalendarGrid for Windows Forms
  • FlexGrid for WinForms(ComponentOne Studio)
  • True DBGrid for WinForms(ComponentOne Studio)

発生する現象

例えば以下のような現象が発生します。
  • IMEをオンにして日本語入力にしているとき、非編集状態のセルで「k」「a」とキーボード入力すると、編集状態になったセルで「か」ではなく「kあ」または「kkあ」と入力される(kは確定状態、あ以降が未確定状態)
  • IMEをオンにして日本語入力にしているとき、非編集状態のセルで「k」とキーボード入力すると、セルが編集状態になるが、「k」が入力されない

原因

本現象は、以下のMicrosoft社の情報のとおり、Fall Creators Updateが原因で発生しています。文字入力によってセルが非編集状態から編集状態に切り替わる際の入力確定のタイミングが不正になるため発生します。

Fall Creators Update を適用後 DataGridView に文字を入力すると 2 文字入力される

なお、本現象は標準のDataGridViewでも発生します。


回避策

キー関連イベントや常時入力モードを利用して、文字入力が開始する前に強制的にセルを編集状態にすることで回避できます。以下の各製品の回避コードを参考に対応をご検討ください。

【SPREAD for Windows Forms】

◎サンプルコード(VB)
' PreviewKeyDownイベントでセルを編集状態にする
Private Sub fpSpread1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles fpSpread1.PreviewKeyDown
  If Not fpSpread1.EditMode AndAlso e.KeyCode = Keys.ProcessKey Then fpSpread1.EditMode = True
End Sub

◎サンプルコード(C#)
// PreviewKeyDownイベントでセルを編集状態にする
private void fpSpread1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
  if (!fpSpread1.EditMode && e.KeyCode == Keys.ProcessKey)
  {
    fpSpread1.EditMode = true;
  }
}


【MultiRow for Windows Forms】

◎サンプルコード(VB)
' PreviewKeyDownイベントでセルを編集状態にする
Private Sub GcMultiRow1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles GcMultiRow1.PreviewKeyDown
  If Not GcMultiRow1.IsCurrentCellInEditMode AndAlso e.KeyCode = Keys.ProcessKey Then GcMultiRow1.BeginEdit(False)
End Sub

◎サンプルコード(C#)
// PreviewKeyDownイベントでセルを編集状態にする
private void gcMultiRow1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
  if (!gcMultiRow1.IsCurrentCellInEditMode && e.KeyCode == Keys.ProcessKey)
  {
    gcMultiRow1.BeginEdit(false);
  }
}


【CalendarGrid for Windows Forms】

◎サンプルコード(VB)
' PreviewKeyDownイベントでセルを編集状態にする
Private Sub GcCalendarGrid1_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles GcCalendarGrid1.PreviewKeyDown
  If Not GcCalendarGrid1.IsCurrentCellInEditMode AndAlso e.KeyCode = Keys.ProcessKey Then GcCalendarGrid1.BeginEdit(False)
End Sub

◎サンプルコード(C#)
// PreviewKeyDownイベントでセルを編集状態にする
private void gcCalendarGrid1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
  if (!gcCalendarGrid1.IsCurrentCellInEditMode && e.KeyCode == Keys.ProcessKey)
  {
    gcCalendarGrid1.BeginEdit(false);
  }
}


【FlexGrid for WinForms(ComponentOne Studio)】

◎サンプルコード(VB)
' EditOnRequestをオフにして常時入力モードにする
C1FlexGrid1.EditOptions -= C1.Win.C1FlexGrid.EditFlags.EditOnRequest

◎サンプルコード(C#)
// EditOnRequestをオフにして常時入力モードにする
c1FlexGrid1.EditOptions -= C1.Win.C1FlexGrid.EditFlags.EditOnRequest;


【True DBGrid for WinForms(ComponentOne Studio)】

◎サンプルコード(VB)
' RowColChangeイベントでEditActiveをTrueにして常時入力モードにする
Private Sub C1TrueDBGrid1_RowColChange(sender As Object, e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles C1TrueDBGrid1.RowColChange
  C1TrueDBGrid1.EditActive = True
End Sub

◎サンプルコード(C#)
// RowColChangeイベントでEditActiveをTrueにして常時入力モードにする
private void c1TrueDBGrid1_RowColChange(object sender, C1.Win.C1TrueDBGrid.RowColChangeEventArgs e)
{
  c1TrueDBGrid1.EditActive = true;
}


なお、以上の回避策は各製品の最新バージョンを使用して確認しています。各製品の旧バージョンの場合は、上記コードを参考に対応をご検討ください。

この情報は、疑問・問題解決のお役に立ちましたか?

    


こちらに入力されたご質問には回答できませんので、製品に関するお問い合わせは、別途「E-mailサポート」をご利用ください。


※ 個人情報保護のため、個人情報の記入はご遠慮ください。

このページの先頭へ