0

ドキュメント構造
Form_1:
- Panel1: - gridView;
- Panel2: - treeList;
- Panel3: - UserControl (選択したツリー ノードによって異なります)。

シナリオ 1:
  - ユーザー。グリッド内の行を選択します。
  - コード。gridView でフォーカスがある行の「ID」値を変数に送信します。(gridView イベントによって処理されます)。
  - コード。デフォルトでは、フォーカスはノード "Node_1" treeList (gridView イベントによって処理されます) に置かれます。

  - ユーザー。treeList 内のノードを選択します。
  - Panel3 には、gridView の「ID」行と treeList のノードの「ID」に対応する UserControl が表示されます (treeList イベントによって処理されます)。

シナリオ 2:
ユーザー。gridView の行間でのみフォーカスを移動します
。treeList では、フォーカスは常に同じノードにあります。
問題: Panel3 はユーザー コントロール "UserControl_1" を表示しますが、これは grid_1 "row_1" にのみ一致します。
実現方法:
- Panel1 --- Panel2 ----- Panel3
- "lines_1" - "Node_1" - "UserControl_1";
- "lines_2" - "Node_1" - "UserControl_2";
- "lines_3" - "Node_1" - "UserControl_3";

質問。
問題「Scenario_2」を修正するには?

 private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
{
    try
    {                
        idParser = Convert.ToInt32(gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "ID"));                

        TreeListNode nodeFocus = treeList2.FindNodeByKeyID(20);
        treeList2.SetFocusedNode(nodeFocus);
    }
    catch (Exception)
    {
        return;        
    }
}


        private void treeList2_AfterFocusNode(object sender, NodeEventArgs e)
        {
            int idNode = Convert.ToInt32(e.Node.GetValue("ID")); // "ID" вбыранного узла

            switch (idNode)
            {
                case 20: 

                    pathToSettingsMain = maskPath + idParser.ToString() + ".xml";                                                                                               

                    f01startURLs = new F01StartURLs(pathToSettingsMain);
                    splitContainer2.Panel2.Controls.Clear();
                    splitContainer2.Panel2.Controls.Add(f01startURLs);

                    userControlCurent = f01startURLs;

                    break;

            }
4

1 に答える 1