このトピックの目的は、 xamNetworkNode コントロール内でノードの異なる視覚的な状態を表示する方法を示すことにあります。視覚的な状態はグループ編成され、それぞれが複数の視覚的状態のプロパティからなり、コントロールは選択されたグループのいずれかから 1 つの状態に設定できます。
XamNetworkNode 用グループ内の視覚的状態について
共通グループ
通常 - 選択されていません、またはフォーカスされていません
無効 - 前景色がグレー表示であり、マウスを重ねる、または押すことでも選択できません。
フォーカス グループ
フォーカスのある - 暗い色の境界線で示されます
フォーカスのない - 暗い色のボーダーがありません
選択グループ
選択済み - 暗い色の強調表示された背景で示されます
未選択 - 暗い色の強調表示された背景がありません
編集グループ
編集- 強調表示された境界線で表示されます
未編集- 強調表示された境界線はありません
以下の表は、このトピックを理解するために必要な前提条件です。
以下の表は、xamNetworkNode コントロール上のノードの構成可能な視覚的状態のリストです。
以下の表は、対応するプロパティ設定の各種視覚的状態をマップしています。プロパティは、XamNetworkNode コントロールの NetworkNodeNode オブジェクトを介してアクセスされます。Focus() メソッドは、XamNetworkNode の NetworkNodeNode.Control オブジェクトで呼び出されます。
以下の図は、通常状態および無効状態の結果を示します。
以下の図は、ノードをフォーカスのある状態にした結果を示します。フォーカスのあるノードからフォーカスのない状態へのクリックによるノード遷移。ノードをフォーカスしないための特別なプロパティやメソッドはありません。通常状態はフォーカスされていないとみなされます。またはフォーカスしないようにするにはノードの選択を解除します。
以下の図は、選択状態の結果を示します。未選択状態は、上記に示すように通常と同じです。
以下の図は、編集状態の結果を示します。未編集状態は、上記に示すように通常と同じです。
コード例を通して定義された各種グループの視覚的状態。
以下の表は、以下に提供されたコード例を示しています。
ノードの無効状態は、前景色がグレーで示され、マウスをクリック、ポインタを重ねる、押すなどしても反応がありません。
C# の場合:
foreach (NetworkNodeNode node in xnn.Nodes) { node.IsEnabled = false; }
Visual Basic の場合:
For Each node As NetworkNodeNode In xnn.Nodes node.IsEnabled = False Next
ノードのフォーカス状態は、デフォルトで暗い色の境界線で表示されます。ノードが無効である場合には、フォーカスできません。一度にフォーカスできるノードはひとつだけです。この例では、ノードはインデックスを使用するノードにフォーカスします。
C# の場合:
xnn.Nodes.ElementAt(3).Control.Focus();
Visual Basic の場合:
xnn.Nodes.ElementAt(3).Control.Focus()
選択状態のノードは、デフォルトで背景が暗い色になり他のノードより目立ちます。選択されたノードは XamNetworkNode の SelectedNodes コレクションで追加されます。
C# の場合:
foreach( var node in xnn.Search((NodeModel item) => item.Label.Equals("1"))) { node.IsSelected = true; // または xnn.SelectedNodes.Add(node); }
Visual Basic の場合:
For Each node As var In xnn.Search(Function(item As NodeModel) item.Label.Equals("1")) node.IsSelected = True ' または xnn.SelectedNodes.Add(node) Next
ノードの編集状態は、視覚的状態のみです。ノードは編集できません。デフォルトでは編集の視覚的状態は、ノードの周りが金色の境界線で示されますが、未編集状態は通常と同じです
C# の場合:
foreach( var node in xnn.Search((NodeModel item) => item.Label.Equals("1"))) { node.IsEditing = true; }
Visual Basic の場合:
For Each node As var In xnn.Search(Function(item As NodeModel) item.Label.Equals("1")) node.IsEditing = True Next