Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Хранение структуры в tag, допустимы ли вольности?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4017
Т.е. например

  <StructLayout(LayoutKind.Sequential)>
  Public Structure MyType
    Dim m_param1 As Boolean
    Dim m_param2 As Boolean
    Dim m_param3 As Integer
    Dim m_param3 As String
  End Structure

'Сохраняю:
    Dim oMyType As New MyType
    With oMyType
      .m_param1 = True
...
    End With
    <Control>.Tag = oMyType

'Извлекаю
    Dim oMyType As MyType = <Control>.Tag
...


Т.е. тупого присваивания туда-сюда без всяких CType, Convert, TryCast, DirectCast и им подобных и каких-то там проверок достаточно?
При условии что мой алгоритм жестко контролирует, что в .Tag не пусто и не object другого типа,
т.е де-факто (логикой кода) не может быть ситуации что у меня при извлечении в .Tag сидит не MyType а какой-нибудь String.
5 окт 17, 08:53    [20844163]     Ответить | Цитировать Сообщить модератору
 Re: Хранение структуры в tag, допустимы ли вольности?  [new]
Изопропил
Member

Откуда:
Сообщений: 30315
Что смущает?

Boxing произойдёт, структура скопируется
5 окт 17, 09:07    [20844188]     Ответить | Цитировать Сообщить модератору
 Re: Хранение структуры в tag, допустимы ли вольности?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4017
Изопропил,

Да в общем-то ничего особо не смущает. На всякий случай спросил, раньше использовал только для хранения String.
В VB6 Tag это вроде как строго String, а не Object, поэтому исторически по-другому не использовал.

Visual Studio 6.0 Tag Property
expression
A string expression identifying the object. The default is a zero-length string ("").


Но судя по ответу и по первым тестам вроде все в порядке.

Т.е. есть набор "настроек-правил".
Хранятся в реестре, промежуточно отображаются в ListView-таблица.
Каждый итем - отдельное правило, каждый сабитем - свойство (или набор свойств).
Щелкнул по итем - редактируем правило в UserForm(GUI)
Смысл, что я обычно хранил свойства в subitems в .Text, вроде и удобно (пользователь все видит в таблице), и типа задача промежуточного хранения решается.
Но пошли такие "свойства", например шаблон текста, либо набор из нескольких свойств, что нормально в .Text не впихнешь, те же переносы строк например (замучаешься парсить туда-сюда, да и не будет это там никто разглядывать), поэтому разумно отображать в subitem.Text что-то простое типа слово default/custom, а данные хранить в subitem.Tag, откуда их уже брать при отображении в UserForm или обратно при сохранении в реестр.
5 окт 17, 09:46    [20844265]     Ответить | Цитировать Сообщить модератору
 Re: Хранение структуры в tag, допустимы ли вольности?  [new]
Изопропил
Member

Откуда:
Сообщений: 30315
Дмитрий77,

А зачем структура в данном случае, класс используй
5 окт 17, 09:52    [20844283]     Ответить | Цитировать Сообщить модератору
 Re: Хранение структуры в tag, допустимы ли вольности?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4017
Изопропил
А зачем структура в данном случае, класс используй

А какая разница?

"Классы" со времен VB6 почему-то недолюбливаю, хотя какое-то их к-во у меня в явном виде таки есть.
Т.е. привык оперировать понятиями Module, Form, Function/Sub, Structure(Type в VB6)
Так уж привык...
5 окт 17, 10:04    [20844308]     Ответить | Цитировать Сообщить модератору
 Re: Хранение структуры в tag, допустимы ли вольности?  [new]
Изопропил
Member

Откуда:
Сообщений: 30315
Отвыкай от vb6
Хотя если по граблям попрыгать есть желание - вперёд!
5 окт 17, 10:18    [20844372]     Ответить | Цитировать Сообщить модератору
 Re: Хранение структуры в tag, допустимы ли вольности?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4017
Изопропил,
привычка великое дело, меня уже вряд ли исправишь.
Надо было на C# сразу переходить, а не на VB.Net.
VB.Net оно как бы с некоторыми парой-тройкой трюков позволяет писать "также как на VB6", C# насколько я понимаю многих аля VB6 штук делать не позволяет.
5 окт 17, 10:25    [20844401]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить