コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 /// <summary>
 /// Перемещение альтернативы
 /// </summary>
 public void MoveAlt(Quest quest, Alternative alt, UserPanelActionType dir)
 {
     ListHelper.MoveElement(quest, alt, (int)dir);
 }
コード例 #4
0
 private void ProcessAlternativeListAction(string altKey, UserPanelActionType actionType)
 {
     FlowPanelActionHelper.ProcessElements(altKey, actionType);
     Changed(); //сигнализируем наверх о том, что объект изменился
 }