2015-10-01 3 views
1

ContolPanel Тип: FlowLayoutPanel Отправитель - это панель, на которую я нажимаю.Регуляторы переупорядочения на обычной панели

Как изменить порядок моих настроек Usercontrols в моей FlowLayoutPanel?

Это, как я добавить свои Objekts (UserControls) к моему FlowLayoutPanel

private void button1_Click_1(object sender, EventArgs e) 
    { 
     int count = 0; 
     var panel = sender as Panel; 
     switch (panel.Name) 
     { 

      case "TypePanel": 
       ContolPanel.Controls.Add(new Type().Initialize(_ConnectionStr, _connection, _brugerLNr, _klinikLNr, _speciale, _ICPC, _segmenterStrings).SetModifiedCallBack(FilterModified)); 
       break; 
     } 
    }  

добавить это как 4-5 раз и есть много diffrent раз, это это только один. Каков наилучший способ переупорядочивать их с помощью кнопки «+» и «-»?

Я thouth из всех сохранение на носители управления в List<Controls> А потом реорганизовать их с чем-то вроде

ControlList[1] = ControlList[2] 

, а затем вставка всех элементов управления из списка в FlowLayoutPanel. Но это просто dosnt, похоже, работает для меня. Есть ли простой способ сделать это умным?

enter image description here

+0

-У вас есть какой-либо скриншот? -Как вы добавляете свои пользовательские элементы управления в панель контейнеров? -Какое переупорядочение вам нужно? Лучше отредактировать свой вопрос и задать более четкий вопрос. –

+0

Вот скриншот http://prntscr.com/8mje3f Его все на датском языке, но, как вы можете видеть, я хочу изменить порядок красных ящиков. с некоторыми стрелками или + или - – Christian

ответ

1

Вы можете добавить свои пользовательские элементы управления на панели и установите Dock свойство ваших пользовательских элементов управления для DockStyle.Top, то как хорошее изменение идеи z-order контроля пользователя с использованием Parent.SetChildIndex, чтобы переместить его вверх или вниз.

Чтобы сделать это, добавьте эти два метода для ваших пользовательских элементов управления:

public void MoveUp() 
{ 
    if (this.Parent == null) 
     return; 

    var index = this.Parent.Controls.GetChildIndex(this); 
    if (index <= this.Parent.Controls.Count) 
     this.Parent.Controls.SetChildIndex(this, index + 1); 
} 

public void MoveDown() 
{ 
    if (this.Parent == null) 
     return; 

    var index = this.Parent.Controls.GetChildIndex(this); 
    if (index > 0) 
     this.Parent.Controls.SetChildIndex(this, index - 1); 
} 

Также вы можете поддержать движение вверх, используя + и двигаться вниз, используя - ключи, переопределив ProcessCmdKey вашим контролем пользователя :

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    switch (keyData) 
    { 
     case Keys.Add: 
      this.MoveUp(); 
      break; 
     case Keys.Subtract: 
      this.MoveDown(); 
      break; 
     default: 
      break; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

а также вы можете добавить движение вверх Button и двигаться вниз Button в вашем пользовательском элементе управления и ручкой Click события этих кнопок в вашем пользовательском элементе управления:

private void MoveUpButton_Click(object sender, EventArgs e) 
{ 
    this.MoveUp(); 
} 

private void MoveDownButton_Click(object sender, EventArgs e) 
{ 
    this.MoveDown(); 
} 

Так как мы создали MoveUp и MoveDown общественности, Вы можете переместить пользовательский элемент управления вверх и вниз в виде:

myUserControl1.MoveUp(); 
Смежные вопросы