Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
vova_king
24 / 24 / 9
Регистрация: 29.07.2010
Сообщений: 264
1

Как в PropertyGrid программно создавать подкатегории

27.06.2015, 01:05. Просмотров 1078. Ответов 3
Метки нет (Все метки)

Доброе время суток.
Имеется PropertyGrid
в классе я создал категории и DisplayName.
В него через функцию
Кликните здесь для просмотра всего текста

vb.net
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
    '**************************память*************************************************************
    Public Function dime()
        Dim objs As Object
        Dim obj As Object
        Dim WMI As Object
        Dim dim_m As String = ""
        Dim dim_mm As String = ""
        Dim memtext As String = ""
        WMI = GetObject("WinMgmts:")
        objs = WMI.InstancesOf("Win32_PhysicalMemory")
        For Each obj In objs
            If obj.FormFactor.ToString = 0 Then
                memtext = "не известен"
            ElseIf obj.FormFactor.ToString = 1 Then
                memtext = "Other"
            ElseIf obj.FormFactor.ToString = 2 Then
                memtext = "SIP"
            ElseIf obj.FormFactor.ToString = 3 Then
                memtext = "DIP"
            ElseIf obj.FormFactor.ToString = 4 Then
                memtext = "ZIP"
            ElseIf obj.FormFactor.ToString = 5 Then
                memtext = "SOJ"
            ElseIf obj.FormFactor.ToString = 6 Then
                memtext = "Proprietary"
            ElseIf obj.FormFactor.ToString = 7 Then
                memtext = "SIMM"
            ElseIf obj.FormFactor.ToString = 8 Then
                memtext = "DIMM"
            ElseIf obj.FormFactor.ToString = 8 Then
                memtext = "DIMM"
            ElseIf obj.FormFactor.ToString = 9 Then
                memtext = "TSOP"
            ElseIf obj.FormFactor.ToString = 10 Then
                memtext = "PGA"
            ElseIf obj.FormFactor.ToString = 11 Then
                memtext = "RIMM"
            ElseIf obj.FormFactor.ToString = 12 Then
                memtext = "SODIMM"
            ElseIf obj.FormFactor.ToString = 13 Then
                memtext = "SRIMM"
            ElseIf obj.FormFactor.ToString = 14 Then
                memtext = "SMD"
            ElseIf obj.FormFactor.ToString = 15 Then
                memtext = "SSMP"
            ElseIf obj.FormFactor.ToString = 16 Then
                memtext = "QFP"
            ElseIf obj.FormFactor.ToString = 17 Then
                memtext = "TQFP"
            ElseIf obj.FormFactor.ToString = 18 Then
                memtext = "SOIC"
            ElseIf obj.FormFactor.ToString = 19 Then
                memtext = "LCC"
            ElseIf obj.FormFactor.ToString = 20 Then
                memtext = "PLCC"
            ElseIf obj.FormFactor.ToString = 21 Then
                memtext = "BGA"
            ElseIf obj.FormFactor.ToString = 22 Then
                memtext = "FPBGA"
            ElseIf obj.FormFactor.ToString = 23 Then
                memtext = "LGA"
            End If
            Dim ret As String = "5"
 
            dim_m = (obj.Manufacturer.ToString) & ":   " & memtext & ":  " & obj.Capacity.ToString / 1024 / 1024 / 1024 & "  ГБ" 'Manufacturer - производитель
            '   dim_mm &= dim_m & ": " & obj.Capacity.ToString & ret 'Chr(9) & Chr(9)
            ' dim_m = obj.Capacity.ToString / 1024 / 1024 / 1024 & "  ГБ"
 
        Next
        Return dim_m
    End Function

Добавляю в категорию сколько памяти, производитель и тип памяти
Кликните здесь для просмотра всего текста

vb.net
1
2
3
4
5
6
7
8
9
    <Category("5.Оперативная память"), DisplayName("Память")>
    Public Property s_dim() As String
        Get
            Return b_dim
        End Get
        Set(value As String)
            b_dim = value
        End Set
    End Property

Но вот загвоздка меня одалела, как мне сказать в коде, что у меня может быть больше 1 планки памяти и она создавала дополнительно в эту категорию подкатегорию в которую бы выводила данные если больше 1 планки.
В textbox у меня получилось через перенос строки выводить сколько вообще у меня планок памяти. А вот в PropertyGrid не как не могу это сделать.

Помогите пожалуйста.
0
Миниатюры
Как в PropertyGrid программно создавать подкатегории  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2015, 01:05
Ответы с готовыми решениями:

Как создавать и удалять контроллы на форме программно
Как создать и удалить контролл на форме через код, желательно описать...

Как в PropertyGrid отменить сортировку по алфавиту?
Задача: Как в PropertyGrid сохранить отображение по категориям но не...

Как поменять шрифт для значений в PropertyGrid?
Привет всем, кто нибудь знает как поменять шрифт для значений в ProprtyGrid ?...

Как создавать новые экземпляры класса и как к ним обращаться?
создал класс Public Class book Public Property strname As String ...

Как создавать инсталляторы?
Написал (уданерие на а) программу. Хочу сделать инсталку, есть ли какая нибудь...

3
Памирыч
Почетный модератор
20893 / 8777 / 1080
Регистрация: 11.04.2010
Сообщений: 11,013
27.06.2015, 02:19 2
Я, возможно, не по теме, но вдруг Вас натолкнет на какую-то мысль.

В следующем примере создается класс с различными полями, в т.ч. и динамическими. Он инициализируется и отображается в PropertyGrid. Вторая кнопка "добавляет" RAM
На форме 2 кнопки

Кликните здесь для просмотра всего текста
vb.net
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Public Class Form1
    Dim propertyGrid1 As New PropertyGrid()
    Dim VK As New vova_king With {.Age = 19, .Height = 178, .OS = "Windows 8 Pro", .Who = "Student"}
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
 
        VK.RAM.Add(4)
        propertyGrid1.CommandsVisibleIfAvailable = True
        propertyGrid1.Location = New Point(10, 20)
        propertyGrid1.Size = New System.Drawing.Size(300, 300)
        propertyGrid1.TabIndex = 1
        propertyGrid1.Text = "Property Grid"
        Me.Controls.Add(propertyGrid1)
 
        propertyGrid1.SelectedObject = VK
 
 
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        VK.RAM.Add(4)
        propertyGrid1.SelectedObject = VK
    End Sub
End Class
Class vova_king
    Dim _age, _hei As Integer
    Dim _who, _os, _stip As String
    Public _ram As New List(Of Integer)
 
    Enum Stip
        Little
        Big
        CanBuyCar
    End Enum
 
    Property Стипендия() As Stip
        Get
 
        End Get
        Set(ByVal value As Stip)
 
        End Set
    End Property
 
    Property Age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal value As Integer)
            _age = value
        End Set
    End Property
 
    Property Height() As Integer
        Get
            Return _hei
        End Get
        Set(ByVal value As Integer)
            _hei = value
        End Set
    End Property
 
    Property Who() As String
        Get
            Return _who
        End Get
        Set(ByVal value As String)
            _who = value
        End Set
    End Property
 
    Property OS() As String
        Get
            Return _os
        End Get
        Set(ByVal value As String)
            _os = value
        End Set
    End Property
 
    Property RAM() As List(Of Integer)
        Get
            Return _ram
        End Get
        Set(ByVal value As List(Of Integer))
            _ram = value
        End Set
    End Property
 
End Class


Как в PropertyGrid программно создавать подкатегории
2
vova_king
24 / 24 / 9
Регистрация: 29.07.2010
Сообщений: 264
27.06.2015, 02:34  [ТС] 3
Попробую подумать, если что отпишусь
0
vova_king
24 / 24 / 9
Регистрация: 29.07.2010
Сообщений: 264
28.06.2015, 14:04  [ТС] 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Решил вопрос следующим способом.
vb.net
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
43
44
45
46
47
48
49
50
51
52
53
54
55
Imports System
Imports System.Management
Imports System.Windows.Forms
Imports System.ComponentModel
 
Public Class Class1
    Private b_dim As String() ' Память
    Public Sub New()
 
        b_dim = dime() '.Split(vbNewLine)
 
 
        'MsgBox(b_board)
    End Sub
    <Category("5.Оперативная память"), DisplayName("Память")>
    Public Property s_dim() As String()
        Get
            Return b_dim
        End Get
        Set(value As String())
            b_dim = value
        End Set
 
    End Property
    '**************************память*************************************************************
    Public Function dime()
        Dim objs As Object
        Dim obj As Object
        Dim WMI As Object
        Dim liste = New List(Of String)
        Dim cnt As Integer = 0
        'Dim dim_m As String
        '  Dim dim_mm As String()
        ' Dim memtext As String
        WMI = GetObject("WinMgmts:")
        objs = WMI.InstancesOf("Win32_PhysicalMemory")
        For Each obj In objs
 
 
            If obj.Capacity <> "" Then
                cnt += 1
                liste.Add(obj.Manufacturer & cnt & ": " & obj.Capacity / 1024 / 1024 / 1024 & "  ГБ")
            End If
            'dim_m = obj.Capacity.ToString / 1024 / 1024 / 1024
            'obj.Manufacturer.ToString) & ":   " & memtext & ":  " & obj.Capacity.ToString / 1024 / 1024 / 1024 & "  ГБ" & vbCrLf'Manufacturer - производитель
            '  dim_mm = (obj.Capacity.ToString)  'Chr(9) & Chr(9)
            'dim_mm &= dim_m & ": " & obj.Capacity.ToString 'Chr(9) & Chr(9)
            ' dim_m = obj.Capacity.ToString / 1024 / 1024 / 1024 & "  ГБ"
 
        Next
        'Return b_dim(List.ToArray)
        s_dim = liste.ToArray()
        Return s_dim
    End Function
End Class
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2015, 14:04

Динамическое добавление свойств в PropertyGrid
Каким образом можно на этапе выполнения программы скрывать, отображать,...

ListView - Как создавать правильно элементы
ListView - Как создавать правильно элементы! Как правильно создавать элемент...

Как динамически создавать массив контроллов?
Есть код, он создает 2 поля TextBox при клике, как создавать новые TextBox-поля...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru