Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];

Вниз

Проблема в C# (помогите найти ошибку)   Найти похожие ветки 

 
Гость   (2009-11-22 10:55) [0]

Всем привет. Произошла проблема с использованием DevExpress компонентов. Помогите определить в чем ошибка. Я написал метод который находит компонент с именем у котого в конце есть символ "_", после первого удачного поиска необходимо вывести диалоговое сообщение и прекратить дальнейший поиск.
Проблема в том, что если компоненты расположены поверх DevExpress компонентов (например на xtraTabControl), после первого удачного поиска break из цикла не происходит, т.е поиск компонентов продолжается. При отладке происходят странные вещи, функция отрабатывает полностью затем вход в рекурсию происходит еще раз, и при наличии 2х компонентов с именем "_", сообщение выводится 2 раза.

public bool ABC(Control AOwner)
       {
           bool result = false;

           // бежим по всем компонентам формы
           for (int i = 0; i < AOwner.Controls.Count; i++)
           {
               string aName;
               aName = AOwner.Controls[i].Name; // имя компонента
               
               // если имя содержит черточку в конце
               if (!(aName == "") && (aName.Substring(aName.Length - 1, 1) == "_"))
               {
                   MessageBox.Show("Компонент найден " + aName);
                   result = true;
                   break;
               }

               if (AOwner.Controls[i].Controls.Count > 0)
               {
                   ABC(AOwner.Controls[i]); //рекурсия                                        
               }                
           }
           return result;
       }


(на sql.ru не нашел ответа, по этому обращаюсь мастерам этого форума с надеждой на помощь)


 
jack128_   (2009-11-22 11:14) [1]


> после первого удачного поиска break из цикла не происходит,
>  

что значит "не происходит"  ?? бряк поставь на break , отрабатывает?


 
TUser ©   (2009-11-22 11:26) [2]

if (ABC(AOwner.Controls[i])) {return true};

?


 
Гость   (2009-11-22 11:35) [3]


> что значит "не происходит"  ?? бряк поставь на break , отрабатывает?


не происходит, я имел введу что сообщение MessageBox отображается несколько раз если на контроле расположено несколько компонентов удовлетворяющих поиску.  Ведь после первого отображения сообщения у меня следом идет Break, т.е теоретически сообщение больше одного раза не должно отобразиться, если сам метод ABC вызван один раз.


 
Гость   (2009-11-22 11:37) [4]


> бряк поставь на break , отрабатывает?
>


не совсем пойму это как?


 
Гость   (2009-11-22 11:40) [5]


> if (ABC(AOwner.Controls[i])) {return true};
>
> ?


Урааа, спасибо большое. Отлично работает :)


 
TUser ©   (2009-11-22 12:05) [6]

Ты главное разберись, почему оно заработало.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2010.01.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
2-1259665917
Xmen
2009-12-01 14:11
2010.01.24
Доступ к папкам через сеть


9-1184091410
Evgraf
2007-07-10 22:16
2010.01.24
D3DXLoadMeshFromX не может найти файл меша в .x формате


1-1228253040
asail
2008-12-03 00:24
2010.01.24
Не рабтает смена лотка в QuickReport


15-1258752615
Юрий
2009-11-21 00:30
2010.01.24
С днем рождения ! 21 ноября 2009 суббота


2-1259848543
kate158
2009-12-03 16:55
2010.01.24
добавление д-х из excel на пересечении строки и столбца





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский