powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / PropertyGrid вопрос
9 сообщений из 9, страница 1 из 1
PropertyGrid вопрос
    #37492421
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть класс, его объект я показываю в настройках приложения в PropertyGrid. Все устраивает.

Теперь хотелось бы сделать так:
две версии приложения, скажем внутри закодированы, полная и урезанная,
так вот как для обрезанной версии показать не все члены объекта, а часть? т.е. типа лайт версии, остальные параметры не видны юзеру и остаются по умолчанию.

Т.е. можно конечно, сделать второй класс, копировать туда и т.д..
Но хотелось бы красиво..
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37492586
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну там же атрибу visible есть. propertygrid на него ориентируется и показывает или нет свойство.
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37492789
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKну там же атрибу visible есть. propertygrid на него ориентируется и показывает или нет свойство.

где именно? и можно менять динамически во время работы приложения?

не нахожу..
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37496798
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh, Вы уже нашли решение? К сожалению, я не большой знаток DesignTime, попробуйте посмотреть в сторону System.ComponentModel . Собственно, вас будут интересовать классы, которые позволяют получить информацию о типе в Design Time. Конкретно это (хотя первый не факт, что нужен будет) Так вот у второго есть такое свойство IsBrowsable - оно как раз и должно показывать видно ли свойство в PropertyGrid (по умолчанию, как я понимаю, оно смотрит на атрибут Browsable) Почитать про это все можно, например, здесь . На сколько я разобрался сам, вам нужно будет:
    Создать свой провайдер типов, наследник от TypeDescriptionProvider , а класс(ы) для которого он будет работать пометить TypeDescriptionProviderAttribute у него определить метод GetExtendedTypeDescriptor , он должен возвращать ваш кастомный описатьель типа, который лучше унаследовать от CustomTypeDescriptor и переопределить пару методов. дальше, я думаю, понятно - надо возвращать PropertyDescriptor`ы с нужным значением IsBrowsable.
P.S. Еще раз повторюсь - путь длинный и я его ни разу не проходил, так что даже гарантировать, что у вас сработает не могу. Но других вариантов я не вижу
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37496802
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexeiKну там же атрибу visible есть. propertygrid на него ориентируется и показывает или нет свойство.
PropertyGrid ориентируется на BrowsableAttribute . А он определяется один раз при компиляции класса.
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37496804
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И да, тема явно не в том форуме
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37496918
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРИ да, тема явно не в том форуме

промахнулся, но больше не смог нчиего сделать
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37498691
МихаилР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhпромахнулся, но больше не смог нчиего сделать
Бывает. :)

Если будет не сложно - отпишите потом о результатх ваших изысканий.
...
Рейтинг: 0 / 0
PropertyGrid вопрос
    #37502852
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МихаилРWinnipuhпромахнулся, но больше не смог нчиего сделать
Бывает. :)

Если будет не сложно - отпишите потом о результатх ваших изысканий.

пока приостановил это изыскание, но продолжу...


Вот пока посомтрите, мне дали ссылку, и если что получится напишите

http://geekswithblogs.net/abhijeetp/archive/2009/01/10/dynamic-attributes-in-c.aspx

Ключевые слова: Dynamic Attributes in C#


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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
using System;
using System.Reflection; 

namespace AttributeExample
{
   class Program
   {
      static void Main(string[] args)
      {
         MyProperties bag = new MyProperties();

         foreach (PropertyInfo pi in typeof(MyProperties).GetProperties())
            if (IsLightweight(pi.Name)) Console.WriteLine(pi.Name);
         
         Console.ReadLine(); 
      }

      static bool IsLightweight(string prop)
      {
         if (typeof(MyProperties).GetProperty(prop).GetCustomAttributes(typeof(LightweightAttribute), true).Length > 0)
            return true;
         return false;
      }

   }

   public class LightweightAttribute : Attribute
   {
      public LightweightAttribute() { }
   }
   
   public class MyProperties
   {
      public int Size { get; set; }

      [Lightweight()]
      public string LastName { get; set; }

      [Lightweight()]
      public string FirstName { get; set; }
   }
}
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / PropertyGrid вопрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]