Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.10.2019
Сообщений: 10

Перемножение чисел Grid

18.10.2019, 20:34. Показов 1694. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
Dim result As Double = 1
        For i = 0 To DataGridView1.Rows.Count - 1
            result *= DataGridView1.Item(i, 0).Value '0 - индекс столбца, i - индекс строки
        Next
        TextBox2.Text = result
При введение в Grid целых чисел - всё считает правильно - только поставлю дробное число или не целое, сразу выдаёт ошибку :

System.InvalidCastException: "Приведение строки "1/2" к типу "Double" является недопустимым."

Как исправить что бы считало сумму и дробных чисел тоже...

Спасибо !
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2019, 20:34
Ответы с готовыми решениями:

Перемножение ряда чисел VB 2010
дан код Public Class Form1 Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles...

Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп <Grid.ColumnDefinitions> и <Grid.RowDefinnitions>?
Возможно ли задать в XAML число строк и столбцов Grid сразу, без исп &lt;Grid.ColumnDefinitions&gt; и &lt;Grid.RowDefinnitions&gt;?

Перемножение чисел
Решить задачу: в 2 текстовых полях вводятся числа. Найти сколько раз нужно перемножить число в первом текстовом поле, чтоб получить...

2
Лень — мое второе и
 Аватар для Orlangur
3228 / 2416 / 687
Регистрация: 28.11.2014
Сообщений: 3,601
Записей в блоге: 3
18.10.2019, 20:48
XioLink, вводить их в виде 0,5
0
2285 / 1601 / 400
Регистрация: 26.06.2017
Сообщений: 4,744
Записей в блоге: 1
19.10.2019, 16:56
Лучший ответ Сообщение было отмечено XioLink как решение

Решение

Для того чтобы исключить неверный пользовательский ввод (например букв) добавьте в проект следующие классы:
Кликните здесь для просмотра всего текста
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
Public Class NumericUpDownColumn
        Inherits DataGridViewColumn
 
        Public Sub New()
            MyBase.New(New NumericUpDownCell())
        End Sub
 
        Public Overrides Property CellTemplate() As DataGridViewCell
            Get
                Return MyBase.CellTemplate
            End Get
            Set(ByVal value As DataGridViewCell)
 
                If Not (value Is Nothing) AndAlso _
                    Not value.GetType().IsAssignableFrom(GetType(NumericUpDownCell)) _
                    Then
                    Throw New InvalidCastException("Must be a CalendarCell")
                End If
                MyBase.CellTemplate = value
 
            End Set
        End Property
 
    End Class
 
    Public Class NumericUpDownCell
        Inherits DataGridViewTextBoxCell
 
        Public Sub New()
            Me.Style.Format = "#.##"
        End Sub
 
        Public Overrides Sub InitializeEditingControl(ByVal rowIndex As Integer, _
            ByVal initialFormattedValue As Object, _
            ByVal dataGridViewCellStyle As DataGridViewCellStyle)
 
            MyBase.InitializeEditingControl(rowIndex, initialFormattedValue, _
                dataGridViewCellStyle)
 
            Dim ctl As NumericUpDownEditingControl = _
                CType(DataGridView.EditingControl, NumericUpDownEditingControl)
            ctl.Value = CType(Me.Value, Decimal)
 
        End Sub
 
        Public Overrides ReadOnly Property EditType() As Type
            Get
                Return GetType(NumericUpDownEditingControl)
            End Get
        End Property
 
        Public Overrides ReadOnly Property ValueType() As Type
            Get
                Return GetType(Decimal)
            End Get
        End Property
 
        Public Overrides ReadOnly Property DefaultNewRowValue() As Object
            Get
                Return 0
            End Get
        End Property
 
    End Class
 
    Class NumericUpDownEditingControl
        Inherits NumericUpDown
        Implements IDataGridViewEditingControl
 
        Private dataGridViewControl As DataGridView
        Private valueIsChanged As Boolean = False
        Private rowIndexNum As Integer
 
        Public Sub New()
            Me.DecimalPlaces = 2
        End Sub
 
        Public Property EditingControlFormattedValue() As Object _
            Implements IDataGridViewEditingControl.EditingControlFormattedValue
            Get
                Return Me.Value.ToString("#.##")
            End Get
            Set(ByVal value As Object)
                If TypeOf value Is Decimal Then
                    Me.Value = Decimal.Parse(value.ToString)
                End If
            End Set
        End Property
 
        Public Function GetEditingControlFormattedValue(ByVal context _
            As DataGridViewDataErrorContexts) As Object _
            Implements IDataGridViewEditingControl.GetEditingControlFormattedValue
            Return Me.Value.ToString("#.##")
        End Function
 
        Public Sub ApplyCellStyleToEditingControl(ByVal dataGridViewCellStyle As _
            DataGridViewCellStyle) _
            Implements IDataGridViewEditingControl.ApplyCellStyleToEditingControl
            Me.Font = dataGridViewCellStyle.Font
            Me.ForeColor = dataGridViewCellStyle.ForeColor
            Me.BackColor = dataGridViewCellStyle.BackColor
        End Sub
 
        Public Property EditingControlRowIndex() As Integer _
            Implements IDataGridViewEditingControl.EditingControlRowIndex
            Get
                Return rowIndexNum
            End Get
            Set(ByVal value As Integer)
                rowIndexNum = value
            End Set
        End Property
 
        Public Function EditingControlWantsInputKey(ByVal key As Keys, _
            ByVal dataGridViewWantsInputKey As Boolean) As Boolean _
            Implements IDataGridViewEditingControl.EditingControlWantsInputKey
            Select Case key And Keys.KeyCode
                Case Keys.Left, Keys.Up, Keys.Down, Keys.Right, _
                    Keys.Home, Keys.End, Keys.PageDown, Keys.PageUp
                    Return True
                Case Else
                    Return False
            End Select
        End Function
 
        Public Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean) _
            Implements IDataGridViewEditingControl.PrepareEditingControlForEdit
            ' No preparation needs to be done.
        End Sub
 
        Public ReadOnly Property RepositionEditingControlOnValueChange() _
            As Boolean Implements _
            IDataGridViewEditingControl.RepositionEditingControlOnValueChange
            Get
                Return False
            End Get
        End Property
 
        Public Property EditingControlDataGridView() As DataGridView _
            Implements IDataGridViewEditingControl.EditingControlDataGridView
            Get
                Return dataGridViewControl
            End Get
            Set(ByVal value As DataGridView)
                dataGridViewControl = value
            End Set
        End Property
 
        Public Property EditingControlValueChanged() As Boolean _
            Implements IDataGridViewEditingControl.EditingControlValueChanged
            Get
                Return valueIsChanged
            End Get
            Set(ByVal value As Boolean)
                valueIsChanged = value
            End Set
        End Property
 
        Public ReadOnly Property EditingControlCursor() As Cursor _
            Implements IDataGridViewEditingControl.EditingPanelCursor
            Get
                Return MyBase.Cursor
            End Get
        End Property
 
        Protected Overrides Sub OnValueChanged(ByVal eventargs As EventArgs)
            valueIsChanged = True
            Me.EditingControlDataGridView.NotifyCurrentCellDirty(True)
            MyBase.OnValueChanged(eventargs)
        End Sub
 
    End Class


Затем при создании DataGridView добавьте колонку:
VB.NET
1
2
3
Dim numCol As New NumericUpDownColumn
numCol.HeaderText = "Numeric"
me.DataGridView1.Columns.Add(numCol)
По умолчанию числа вводятся в формате #.##
Теперь пользователь не сможет вводить ничего кроме чисел.

Добавлено через 4 часа 42 минуты
Ё-о-о , не сразу разглядел, что это частный вопрос из задачи создания матрицы на основе DataGridView. Однако совет применим и для DataGridView в целом.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2019, 16:56
Помогаю со студенческими работами здесь

Перемножение двух длинных чисел
Здравствуйте, подскажите пожалуйста, каким образом можно перемножить два длинных числа (от 30 символов в каждом) и получить целочисленный...

Перемножение десятизначных чисел дает неверный результат
Добрый день ув. форумчане, столкнулся с проблемой, есть число 913, его надо умножить на 8млн. т.е. 913*8000000 и получим 7304000000,...

Перемножение чисел
Дано: Циклы с параметром. Вложенные циклы Попробуйте написать программу, которая перемножает числа 1, 4, 7, 10 с использованием...

Перемножение двоичных чисел
Добрый день!:) Возникла проблема при написании калькулятора для двоичных чисел, точнее, проблемы с умножением. Логику сего процесса вроде...

перемножение 2-ичных чисел
нужно создать программу по перемножению 2-ичных чисел. И ответ вывести в 10-ричной.Помогите.


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru