/// <summary> /// Управление пользовательскими элементами управления внутри FlowLayoutControl /// </summary> /// <param name="elementKey">Ключ элемента управления</param> /// <param name="actionType">Тип действия над элементом управления</param> public void ProcessElements(string elementKey, UserPanelActionType actionType) { switch (actionType) { case UserPanelActionType.Remove: FlowLayoutPanel.Controls.RemoveByKey(elementKey); break; case UserPanelActionType.MoveUp: case UserPanelActionType.MoveDown: var movingAlt = FlowLayoutPanel.Controls.Find(elementKey, false).First(); if (movingAlt == null) { break; } var controlIndex = FlowLayoutPanel.Controls.IndexOfKey(elementKey); /*ограничение на циклическую перестановку пользовательских элементов управления внутри FlowLayoutControl*/ if (controlIndex == 0 && actionType == UserPanelActionType.MoveUp) { break; } //создаем хелпер отрисовки, останавливаем отрисовку var helper = new ControlHelper(FlowLayoutPanel); FlowLayoutPanel.Controls.SetChildIndex(movingAlt, controlIndex + (int)actionType); helper.ResumeDrawing(); break; } }
private void ProcessQuestionListAction(string questionPanelKey, UserPanelActionType actionType) { _changed = true;//выставлем флажок изменения if (actionType == UserPanelActionType.Add) { var question2Add = _questionnaire.First(q => q.Id.Equals(questionPanelKey)); AddQuestion2Interface(question2Add); return;//Дальше делать нечего } //создаем хелпер отрисовки, останавливаем отрисовку FlowPanelActionHelper.ProcessElements(questionPanelKey, actionType); }
/// <summary> /// Перемещение альтернативы /// </summary> public void MoveAlt(Quest quest, Alternative alt, UserPanelActionType dir) { ListHelper.MoveElement(quest, alt, (int)dir); }
private void ProcessAlternativeListAction(string altKey, UserPanelActionType actionType) { FlowPanelActionHelper.ProcessElements(altKey, actionType); Changed(); //сигнализируем наверх о том, что объект изменился }