Зафиксируйте встроенные ресурсы для универсального UserControl

ох! аккуратный вопрос.

Matlab для цикла берет матрицу в качестве входа и выполняет итерации по его столбцам. Matlab также обрабатывает практически все значением (никакая передача ссылкой), таким образом, я ожидал бы, что это берет снимок входа для цикла, таким образом, это неизменно.

вот пример, который может помочь проиллюстрировать:

>> A = zeros(4); A(:) = 1:16

A =

     1     5     9    13
     2     6    10    14
     3     7    11    15
     4     8    12    16

>> i = 1; for col = A; disp(col'); A(:,i) = i; i = i + 1; end;
     1     2     3     4

     5     6     7     8

     9    10    11    12

    13    14    15    16

>> A

A =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4
23
задан Peter Mortensen 19 December 2011 в 09:25
поделиться

2 ответа

Оказывается, вы можете переопределить имя файла ресурса для загрузки, унаследовав от ComponentResourceManager следующим образом:

   using System;
   using System.ComponentModel;

   internal class CustomComponentResourceManager : ComponentResourceManager
   {
      public CustomComponentResourceManager(Type type, string resourceName)
         : base(type)
      {
         this.BaseNameField = resourceName;
      }
   }

Теперь я могу убедиться, что диспетчер ресурсов загружает MyControl .resources вот так:

 System.ComponentModel.ComponentResourceManager resources =
    new CustomComponentResourceManager(typeof(MyControl<>), "MyControl");

Кажется, это работает.

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

18
ответ дан 29 November 2019 в 02:01
поделиться

На моем Visual Studio 2008 у меня есть эта ошибка:

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager (typeof (MyControl));

Использование универсального типа 'WindowsFormsApplication1.UserControl1' требует аргументов типа '1'.

Обратите внимание, что в моем случае код был сгенерирован без круглых скобок, <> , после имени класса.

Это становится интересным, см. ImageList автоматически генерирует некомпилируемый код в Generic User Control .

Что они сказали:

Отправлено Microsoft 6.07.2005 в 14:49

Это интересная ошибка. Вы натолкнулись на общий сценарий, который мы не поддерживаем в конструкторе Windows Forms. Мы не сможем добавить поддержку этого в Whidbey (примечание: Visual Studio 2008?) Релиз. Мы рассмотрим это в следующей версии. В качестве обходного пути вы можете использовать конструктор для создания не универсального UserControl с общедоступным свойством Type, а затем создать универсальный класс, который наследуется от него и передает T в свойство Type базовых классов.

Я полагаю, что этот элемент управления не может быть разработан в конструкторе форм Visual Studio тоже.

4
ответ дан 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: