Структура документа
Форма_1:
- Panel1: - gridView;
- Panel2: - treeList;
- Panel3: - UserControl (в зависимости от выбранного узла дерева);
Сценарий_1:
- Пользователь.выбирает строку в сетке.
- Код.Отправляет в переменную значение «ID» строки, на которой находится фокус в gridView.(обрабатывается событием gridView).
- Код.По умолчанию фокус помещается на узел «Node_1» treeList (обрабатывается событием gridView).
- Пользователь.выбирает узел в treeList.
- в Panel3 отображается UserControl, который соответствует строке «ID» из gridView и «ID» узла из treeList (обрабатывается событием 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";
Вопрос.
Как решить проблему "Сценарий_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;
}