UTable .NET Framework用 表入力コンポーネント
ドキュメント

イベント

この項では、UTableが発生させるイベントについて説明します。 なお、一部のイベントには、フィールドにも対応するイベントが存在します。 UTableのイベントと、対応するフィールドのイベントでは、 フィールドのイベントのほうが先に発生します。

UTableが発生させるイベントの一覧を以下に示します。 フィールドが発生するイベントは、[ ]内に示します。

イベント説明
RecordAdded(record) recordが追加されると発生します
RecordMoved(record) recordが移動されると発生します
RecordRemoved(record) recordが削除されると発生します
FieldValidating(field, e)
[ Validating(field, e) ]
fieldの値を検証する必要があるときに発生します
FieldValidated(field)
[ Validated(field) ]
fieldの値が検証され、妥当と判断された時に発生します
ContentValidated(content, key) content内のkeyに対応するフィールドでValidatedイベントが発生した時に発生します
このイベントの発生タイミングはContentValidatedBlockメソッドで制御することができます
FieldValueChanged(field)
[ ValueChanged(field) ]
fieldの値が変更されると発生します
厳密には、fieldに対してコミットが行われると発生します
EditorValueChanged(field)
[ EditorValueChanged(field) ]
エディタ上で値が変更されると発生します
FieldEntering(field, cancel)
[ Entering(field, cancel) ]
fieldがフォーカスを得ようとした時に発生します
イベントハンドラ内でcancelをTrueとすると、
fieldがフォーカスを得ることを禁止できます
FieldEnter(field)
[ Enter(field) ]
fieldがフォーカスを得た時に発生します
RecordEnter(record) record内のフィールドがフォーカスを得た時に発生します
record内だけでフォーカス移動が行われた場合は発生しません
FieldLeave(field)
[ Leave(field) ]
fieldがフォーカスを失うと発生します
FieldMouseDown(field, location, e)
[ MouseDown(field, location, e) ]
field上でマウスのボタンが押されると発生します
locationにはfield内のボタンが押された座標が渡されます
FieldMouseUp(field, location, e)
[ MouseUp(field, location, e) ]
field上でマウスのボタンが放されると発生します
locationにはfield内のボタンが放された座標が渡されます
FieldMouseMove(field, location, e)
[ MouseMove(field, location, e) ]
field上でマウスカーソルが移動すると発生します
locationにはfield内のカーソルの座標が渡されます
FieldClick(field, location, e)
[ Click(field, location, e) ]
field上でマウスがクリックされると発生します
locationにはfield内のクリックされた座標が渡されます
FieldDoubleClick(field, location, e)
[ DoubleClick(field, location, e) ]
field上でマウスがダブルクリックされると発生します
locationにはfield内のダブルクリックされた座標が渡されます
FieldKeyDown(field, e)
[ KeyDown(field, e) ]
field上でキーボードのキーが押されると発生します
FieldKeyUp(field, e)
[ KeyUp(field, e) ]
field上でキーボードのキーが放されると発生します
FieldSelected(field, handled)
[ Selected(field, handled) ]
field上でEnterキーが押されるか、ダブルクリックされると発生します
handledをTrueにすることで、デフォルトの操作を禁止できます
例えば、ダブルクリック時には編集可能フィールドであれば
通常は編集モードが開始されますが、それが禁止されます
さらに、Enterキーが押された時のキーボードオペレーションの動作も
同様に禁止されます
FieldButtonClick(field)
[ ButtonClick(field) ]
fieldのボタンがクリックされると発生します
EditStarting(field, editable)
[ EditStarting(field, editable) ]
field上で編集モードが開始されようとすると発生します
editableをALLOWとすると、編集モードは開始されます
DISABLEとすると、編集モードは開始されません
EditStart(field, editor)
[ EditStart(field, editor) ]
field上で編集モードが開始されると発生します
EditFinished(field)
[ EditFinished(field) ]
field上で編集モードが終了されると発生します
FocusNextField(field, forward, handled) [ FocusNextField(field, forward, handled) ] fieldから次(または前)のフィールドへフォーカスが移ろうとした時に発生します
forwardには次への移動ならばTrue、前への移動ならばFalseが渡されます
handledをTrueとすることで、デフォルトの動作を禁止できます
FocusNextControl(field, forward, handled) [ FocusNextControl(field, forward, handled) ] テーブルから次(または前)のコントロールへフォーカスが移ろうとした時に発生します
forwardには次への移動ならばTrue、前への移動ならばFalseが渡されます
handledをTrueとすることで、デフォルトの動作を禁止できます
Sorted(content, key) contentでソートが行われると発生します
InitializeEditor(field, editor) editorが生成されると発生します
このイベントはeditorにフィールドの値などが設定される前の時点で発生します
editorのプロパティをカスタマイズするなどの目的に利用して下さい
LayoutUpdating(table) レイアウトの変更(レコードや行列サイズの操作など)が行われた後に
レンダリングが行われる時点で発生します
DecideScrollRect(field, rect) fieldがフォーカスを得た時に、
スクロールによって表示されるべき領域を決定する時に発生します
UndoFinished(table, ucs) Undoが行われた後に発生します。
RedoFinished(table, ucs) Redoが行われた後に発生します。

Validating, Validatedイベント

(Field)Validatingイベントと(Field)Validatedイベント、そしてContentValidatedイベントは、 ユーザ操作によってフィールドの値が変更される際に発生します。 具体的には、その発生タイミングは以下の4つの場合です。

  • エディタ上で編集された値がコミットされる場合
  • Clearメソッドが呼ばれる場合
  • ClipboardPasteメソッドが呼ばれる場合
  • SetValueIfValidatedメソッドが呼ばれる場合

まず発生するのは(Field)Validatingイベントで、 そのイベントハンドラ内で入力された値が妥当かを検証し、 必要に応じてフィールドにその値が代入されることをキャンセルできます。

  Private Sub Table_FieldValidating(ByVal field As UTable.CField, _
                                    ByVal e As System.ComponentModel.CancelEventArgs) _
                                    Handles Table.FieldValidating
      ' [name]フィールドには10文字以内のテキストのみ入力可能とする
      Select Case field.Key
          Case "name"
              If field.Value IsNot Nothing AndAlso field.Value.ToString.Length > 10 Then
                  e.Cancel = True
              End If
      End Select
  End Sub

(Field)Validatingイベントでキャンセルされなかった場合に限り、 (Field)ValidatedイベントとContentValidatedイベントが発生します。

EditBlockとContentValidatedイベント

(Field)Validatedイベントはフィールド毎に発生するイベントであるのに対して、 ContentValidatedイベントはコンテントごとに発生するという意味合いを持ちます。 つまり、複数のフィールドの内容を同時に書き換えるといった操作を行った場合、 (Field)Validatedイベントはフィールドの数だけ発生するのに対し、 ContentValidatedイベントはコンテントのキーごとに1度だけ発生します。

複数フィールドに対する編集をアトミックなものとして扱うには、 EditBlockメソッドをUsing句と共に利用します。

  Using table.EditBlock
     'フィールド値を編集
  End Using

これで、フィールドをいくつ編集しても、 ContentValidatedイベントの発生はUsing句を抜ける際にキーごとに1度だけ行われるようになります。 なお、この仕組みは、ClipboardPasteメソッド内で利用されています。

次へ    ドキュメントのトップ / ホーム


Copyright (c) 2009, SystemBase Co.,Ltd.
All rights reserved.