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) fieldから次(または前)のフィールドへフォーカスが移ろうとした時に発生します
forwardには次への移動ならばTrue、前への移動ならばFalseが渡されます
handledをTrueとすることで、デフォルトの動作を禁止できます
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がフォーカスを得た時に、
スクロールによって表示されるべき領域を決定する時に発生します

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.