Re: Как получить имя компонента в runtime
От: _FRED_ Черногория
Дата: 19.05.05 14:28
Оценка: 3 (1)
Здравствуйте, M_A_K, Вы писали:
M_A>Есть форма. На ней есть компонент (не контрол!). Возможно ли получить его имя в runtime? В design mode, как я понимаю, оно доступно через MyComponent.Site.Name, но в runtime там пустота, однако

    private string GetComponentName(object container, object component) {
      if(container == null) {
        throw new ArgumentNullException("container");
      } else if(component == null) {
        throw new ArgumentNullException("component");
      }//if

      foreach(FieldInfo fieldInfo in container.GetType().GetFields(BindingFlags.Instance | BindingFlags.GetField | BindingFlags.Public | BindingFlags.NonPublic)) {
        if(fieldInfo.GetValue(container) == component) {
          return fieldInfo.Name;
        }//if
      }//for

      return String.Empty;
    }


Если точно известно что component обявлен именно в классе container'а, то можно добавить BindingFlags.DeclaredOnly.
under « — Faith Healer [barracuda mix]»,
... << RSDN@Home 1.1.4 beta 7 rev. 455>>
Help will always be given at Hogwarts to those who ask for it.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.