2013-12-22 5 views
-2

У меня есть этот кусок FOREACH кода, который делает часть музыкальных нотуправления Foreach в C# в порядке убывания

foreach (MusicNote mn in pictureBox1.Controls) 
{ 
    sp.SoundLocation = @"..\\..\\bin\\Debug\\sound\\mapped\\" + mn.pitch+ ".wav"; //find that pressed note 
    Thread.Sleep(mn.duration * 100); //The Ticks * 100 to convert them into milliseconds 
    sp.Play(); //play it 
} 

Это должно пройти все элементы управления и играть их один за другим, но проблема в том, что она начинается с последний добавлен вместо первого, как хотелось бы, это означает, что он играет в по убыванию заказать NOT по возрастанию, как будто я хочу, чтобы это было. Любая идея, как это можно исправить?

+1

Почему бы не использовать классический цикл 'for'? –

+0

, так как тогда мне нужно больше контроля над ним, например, показать ноты и так далее. – DodoSerebro

ответ

0
pictureBox1.Controls.Cast<Control>().Reverse() 
+0

Работал как шарм. большое спасибо :) Что делает CAST точно, пожалуйста, это похоже на список List – DodoSerebro

+0

Также есть способ, как очистить все элементы управления ПОСЛЕ того, как я делаю контрольный обход, пожалуйста? – DodoSerebro

+0

@DodoSerebro 'есть способ, как очистить все элементы управления ПОСЛЕ того, как я делаю контрольный обход, пожалуйста?' -1 один вопрос за раз. –

2

Порядок управления в Controls собственности на основе Z-индекс каждого элемента управления (как Controls свойство возвращает ControlCollection, а не просто обычный список).

Вы можете управлять z-индексом каждого элемента управления с помощью метода SetChildIndex. Если вы явно управляете z-index с помощью этого метода при добавлении элементов управления (вы не говорите, как добавляются элементы управления, поэтому я предполагаю, что вы делаете это вручную в коде), они должны выйти в том порядке, в котором вы хотите, вы перебираете недвижимость Controls.

+0

Уход, объясняющий бит SetChildIndex больше, пожалуйста ??? Что он делает точно? У меня есть клавиатура, и когда я нажимаю клавиши, это делает музыку. Примечание, касающееся высоты тона, продолжительности и формы. – DodoSerebro

+0

@DodoSerebro: Позиция каждого элемента управления может быть установлена ​​явно. Это позволяет помещать их в определенную позицию в том, что фактически является упорядоченным списком. 'SetChildIndex' позволяет вам установить элемент управления в определенную позицию (например, если у вас есть восемь элементов управления, вы можете поместить элемент управления, который хотите перенести первым в нулевой позиции). – adrianbanks

+0

, что имеет смысл, поэтому, если я устанавливаю первый элемент как позицию 0, автоматически все остальные за этим элементом выстраиваются автоматически как 1,2,3,4? – DodoSerebro

Смежные вопросы