Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
906
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
UITypeEditor и IExtenderProvider
У меня есть экстендер (IExtenderProvider), который расширяет некоторые типы элементы управления с дополнительными свойствами. Для одного из этих свойств у меня есть написано а UITypeEditor. Пока что все работает просто отлично.
Экстендер также имеет несколько свойств сам по себе, которые я пытаюсь Используйте как своего рода дефолт для UITypeEditor. То, что я хочу сделать, - это быть возможность установить свойство на самом расширителе (не расширенные элементы управления), и когда я открываю UITypeEditor для одного из дополнительных свойств на расширенный элемент управления, я хочу установить значение в UITypeEditor на значение из имущества на расширителе.
Простой пример: ExtenderProvider имеет свойство DefaultExtendedValue. В форме я установил значение этого свойства в "My Value". Расширенные элементы управления имеют, через поставщика, свойство ExtendedValue с UITypeEditor. Когда я открываю редактор для свойства ExtendedValue, значение по умолчанию (начальное) должно быть равно "My Value".
Мне кажется, что лучшим местом для этого было бы UITypeEditor.EditValue, как раз перед звонком IWindowsFormsEditorService.DropDownControl или .ShowDialog.
Единственная проблема заключается в том, что я не могу (или не знаю, как это сделать) получить доступ самого поставщика расширителя в EditValue, чтобы прочитать значение рассматриваемого свойства и установить его в UITypeEditor. Контекст дает мне расширенное представление контроль, но в данном случае он мне ни к чему.
Есть ли какой-то способ достичь того, что я пытаюсь? Любая помощь ценится!
Спасибо Том
- Это неплохая идея, но, к сожалению, она меня не совсем устраивает. Я бы очень хотел иметь возможность установить это значение по умолчанию индивидуально для каждого экземпляра поставщика расширителя. (У меня может быть больше одного на одной форме с разными значениями для разных групп расширенных элементов управления.)
Не могли бы вы сами прочитать этот атрибут?
DefaultValueAttribute att = context.
PropertyDescriptor.Attributes.
OfType<DefaultValueAttribute>().
FirstOrDefault();
object myDefault = null;
if ( att != null )
myDefault = att.Value;
Я использовал Linq для упрощения кода, но вы могли бы сделать что-то подобное еще в .Net 1
Привет, я нашел это: http://social.msdn.microsoft.com/forums/en-US/winformsdesigner/thread/07299eb0-3e21-42a3-b36b-12e37282af83/
В основном :
var Ctl = context.Instance as Control;
Type t = Type.GetType("System.ComponentModel.ExtendedPropertyDescriptor");
LocalizationProvider myProvider = GetValueOnPrivateMember(t, context.PropertyDescriptor, "provider") as MyOwnExtenderProvider;
И волшебным образом myProvider получил мой контроль над IExtenderProvider !
где GetValueOnPrivateMember должен быть реализован таким образом:
static object GetValueOnPrivateMember(Type type, object dataobject, string fieldname)
{
BindingFlags getFieldBindingFlags = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField;
return type.InvokeMember(fieldname,
getFieldBindingFlags,
null,
dataobject,
null);
}