There are a number of ways to do it depending on your efficiency needs. Usually a priority queue is optimized for maximum retrieval speed of the highest priority item. So you would do a sorted insert of new items according to the priority relation:
template <typename T>
void PQueue<T>::Insert(T item)
_data[_size++] = item;
for (int i = _size - 1; i >= 0; --i)
if (item <= _data[i])
_data[i + 1] = _data[i];
_data[++_size] = item;
Likewise you do a sorted removal of the highest priority item for deletion. This is actually quite trivial as the highest priority item should be either the first or last in the array (storing it as the last item makes removal very efficient while as the first item you need to do a potentially expensive shift). Doing the priority lookup is equally trivial as you just return the item at the 0th index or n-1th index depending on how you've chosen to do the sort.
Priority Queue is an abstact data type where each element in the queue ha its associated priority. Element eith higher priority will be processed first than the element with the lower priority.
Its 2 operations:
For Each ctrl As Control In Me.Controls("pnlMainPanel").Controls
If ctrl.GetType Is GetType(System.Windows.Forms.Panel) Then
For Each subCtrl As Control In ctrl.Controls
If subCtrl.GetType Is GetType(System.Windows.Forms.TextBox) Then
If subCtrl.GetType Is ...