- BestProg
- Пример создания двумерной матрицы на форме. Аналог компонента TStringGrid в Delphi
- Содержание
- Условие задачи
- Выполнение
- 1. Запуск Microsoft Visual Studio . Создание проекта
- 2. Создание главной формы Form1
- 3. Создание второстепенной формы Form2
- 4. Ввод внутренних переменных
- 5. Программирование события Load формы Form1
- 6. Разработка дополнительного метода обнуления данных в матрице MatrText
- 7. Программирование события клика на кнопке button1 (« Ввод матрицы 1 … »)
- 8. Программирование события клика на кнопке button2 (“ Ввод матрицы 2… «)
- 9. Программирование события Leave потери фокуса ввода элементом управления textBox1
- 10. Программирование события клика на кнопке button3 (« Результат »)
- 11. Программирование события клика на кнопке button4 (« Сохранить в файле «Res_Matr.txt” ”)
- 12. Запуск приложения на выполнение
- Умножение матриц
- Решение
- Класс матрицы в Windows Form
BestProg
Пример создания двумерной матрицы на форме. Аналог компонента TStringGrid в Delphi
Часто в задачах нужно ввести числа или другие данные в двумерный массив (матрицу) и иметь возможность их обрабатывать.
В работе реализован аналог компонента TStringGrid используемого в Delphi для представления данных в виде двумерной таблицы строк. Для этого в C# используется двумерный массив элементов управления типа TextBox .
Содержание
Поиск на других ресурсах:
Условие задачи
Составить программу, которая осуществляет произведение двух матриц размерностью n . Матрицы вводятся из клавиатуры в отдельной форме и заносятся во внутренние структуры данных. Пользователь имеет возможность просмотреть результирующую матрицу.
Также есть возможность сохранения результирующей матрицы в текстовом файле “ Res_Matrix.txt ”.
Выполнение
1. Запуск Microsoft Visual Studio . Создание проекта
Подробный пример запуска Microsoft Visual Studio и создания приложения по шаблону Windows Forms Application описывается в теме:
Сохранить проект под любым именем.
2. Создание главной формы Form1
Создать форму, как показано на рисунке 1.
Разместить на форме элементы управления следующих типов:
- четыре элемента управления типа Button . Автоматически будут созданы четыре объекта (переменные) с именами button1 , button2 , button3 , button4 ;
- три элемента управления типа Label с именами label1 , label2 , label3 ;
- один элемент управления типа TextBox , доступ к которому можно получить по имени textBox1 .
Сформировать свойства элементов управления типа Button и Label:
- в объекте button1 свойство Text = “ Ввод матрицы 1 … «;
- в объекте button2 свойство Text = “ Ввод матрицы 2 … «;
- в объекте button3 свойство Text = “Результат …» ;
- в объекте button4 свойство Text = “ Сохранить в файле “Res_Matr.txt” ”;
- в элементе управления label1 свойство Text = “ n = ”.
Для настройки вида и поведения формы нужно выполнить следующие действия:
- установить название формы. Для этого свойство Text = “ Произведение матриц ”;
- свойство StartPosition = “ CenterScreen ” (форма размещается по центру экрана);
- свойство MaximizeBox = “ false ” (убрать кнопку развертывания на весь экран).
Рис. 1. Форма приложения
3. Создание второстепенной формы Form2
Во второстепенной форме Form2 будут вводиться данные в матрицы и выводиться исходный результат.
Пример создания новой формы в MS Visual Studio – C# подробно описан здесь .
Добавить новую форму к приложению, вызвав команду
В открывшемся окне выбрать « Windows Form ». Имя файла оставить без изменений « Form2.cs ».
Разместить на форме в любом месте элемент управления типа Button (рис. 2). В результате будет получен объект с именем button1.
В элементе управления button1 нужно установить следующие свойства:
- свойство Text = “ OK ”;
- свойство DialogResult = “ OK ” (рис. 3). Это означает, что при нажатии (клике «мышкой») на button1, окно закроется с кодом возвращения равным “ OK ”;
- свойство Modifiers = “Public”. Это означает, что кнопка button1 будет видимой из других модулей (из формы Form1).
Настроить свойства формы Form2:
- свойство Text = “ Ввод матрицы ”;
- свойство StartPosition = “CenterScreen” (форма размещается по центру экрана);
- свойство MaximizeBox = “false” (убрать кнопку развертывания на весь экран).
Рис. 2. Форма Form2 после настройки
Рис. 3. Свойство DialogResult элемента управления button1 формы Form2
4. Ввод внутренних переменных
Следующий шаг – введение внутренних переменных в текст модуля “ Form1.cs ”.
Для этого сначала нужно активировать модуль “ Form1.cs ”.
В тексте модуля “ Form1.cs ” добавляем следующий код:
Объясним некоторые значения переменных:
- Max – максимально-допустимая размерность матрицы;
- n – размерность матрицы, введенная пользователем из клавиатуры в элементе управления TextBox1;
- MatrText – двумерная матрица элементов управления типа TextBox. В эту матрицу будут вводиться элементы матрицы в виде строк. Ввод данных будет формироваться в форме Form2;
- Matr1, Matr2 – матрицы элементов типа double, в которые будут копироваться данные из матрицы MatrText;
- Matr3 – результирующая матрица, которая равная произведению матриц Matr1 и Matr2;
- f1, f2 – переменные, определяющие были ли введенные данные соответственно в матрицы Matr1 и Matr2;
- dx, dy – габариты одной ячейки типа TextBox в матрице MatrText;
- form2 – объект класса формы Form2, по которыму будет получен доступ к этой форме.
5. Программирование события Load формы Form1
Процесс программирования любого события в Microsoft Visual C# подробно описан здесь .
Листинг обработчика события Load формы Form1 следующий:
Объясним некоторые фрагменты кода в методе Form1_Load().
Событие Load генерируется (вызывается) в момент загрузки любой формы. Поскольку форма Form1 есть главной формой приложения, то событие Load формы Form1 будет вызываться сразу после запуска приложения на выполнение. Поэтому, здесь целесообразно ввести начальную инициализацию глобальных элементов управления и внутренних переменных программы. Эти элементы управления могут быть вызваны из других методов класса.
В обработчике события Form1_Load() выделяется память для двумерной матрицы строк MatrText один лишь раз. При завершении приложения эта память будет автоматически освобождена.
Память выделяется в два этапа:
- для самой матрицы MatrText – как двумерного массива;
- для каждого элемента матрицы, который есть сложным объектом типа TextBox.
После выделения памяти для любого объекта осуществляется настройка основных внутренних свойств (позиция, размер, текст, видимость в некоторой форме ).
Также каждая созданная ячейка добавляется (размещается) на форму Form2 с помощью метода Add() из класса Controls. Каждая новая ячейка может быть добавлена в любую другую форму приложения.
6. Разработка дополнительного метода обнуления данных в матрице MatrText
В будущем, чтобы многократно не использовать код обнуления строк матрицы MatrText, нужно создать собственный метод (например, Clear_MatrText()) реализующий этот код.
Листинг метода Clear_MatText() следующий:
7. Программирование события клика на кнопке button1 (« Ввод матрицы 1 … »)
При нажатии (клике) на button1 должно вызываться окно ввода новой матрицы. Размер матрицы зависит от значения n .
Листинг обработчика события клика на кнопке button1 следующий:
В вышеприведенном листинге читается значение n . После этого осуществляется настройка ячеек матрицы строк MatrText.
На основе введенного значения n формируются размеры формы form2 и позиция кнопки button1.
Если в форме Form2 пользователь нажал на кнопке OK (button2), то строки с MatrText переносятся в двумерную матрицу вещественных чисел Matr1. Преобразование из строки в соответствующее вещественное число выполняется методом Parse() из класса Double.
Также формируется переменная f1, которая указывает что данные в матрицу Matr1 внесены.
8. Программирование события клика на кнопке button2 (“ Ввод матрицы 2… «)
Листинг обработчика события клика на кнопке button2 подобен листингу обработчика события клика на кнопке button1. Только он отличается шагами 7-8. На этом участке формируются матрица Matr2 и переменная f2.
9. Программирование события Leave потери фокуса ввода элементом управления textBox1
В приложении может возникнуть ситуация, когда пользователь изменяет значение n на новое. В этом случае должны заново формироваться флажки f1 и f2. Также изменяется размер матрицы MatrText, которая выводится в форме Form2.
Изменение значения n можно проконтролировать с помощью события Leave элемента управление textBox1. Событие Leave генерируется в момент потери фокуса ввода элементом управления textBox1 (рис. 4).
Рис. 4. Событие Leave элемента управления textBox1
Листинг обработчика события Leave следующий:
10. Программирование события клика на кнопке button3 (« Результат »)
Вывод результата будет осуществляться в ту же форму, в которой вводились матрицы Matr1 и Matr2. Сначала произведение этих матриц будет сформировано в матрице Matr3. Потом значение с Matr3 переносится в MatrText и отображается на форме Form2.
Листинг обработчика события клика на кнопке button3.
11. Программирование события клика на кнопке button4 (« Сохранить в файле «Res_Matr.txt” ”)
Для сохранения результирующей матрицы Matr3 можно использовать возможности класса FileStream.
Класс FileStream описан в модуле System.IO . Поэтому в начале приложения нужно добавить следующий код:
Листинг обработчика события клика на кнопке button4 следующий:
12. Запуск приложения на выполнение
После этого можно запускать приложение на выполнение и тестировать его работу.
Умножение матриц
В общем задача такая, матрица из dataGridView1 умножается на матрицу dataGridView2 и результат выводится в dataGridView3. Но в последней строчке выскакивает ошибка: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Что это означает и как исправить?
P.S. В программировании я плохо разбираюсь. (Это на случай, если вопрос бредовый)
Умножение матриц!
С# Windows Application. Матрицы однотипные, типа 3х3*3х3, 4х4*4х4, 5х5*5х5 итд. умножает, а матрицы.
Умножение матриц
помогите нужно умножить матрицу из datagridview1 на datagridview2 и вывести в datagridview3.
Перемножение матриц и умножение матрицы на число
помогите с перемножением матриц и умножением матрицы на число.не понимаю как это делать все что я.
Работа с Excel: функции — умножение матриц и нахождение обратной матрицы
Здравствуйте, подскажите, как подключить Excel к С# и достать от туда две функции это умножение.
Под проектом имеется в виду сама папка с файлами или что-то другое?
Добавлено через 3 часа 37 минут
Вложения
WindowsForm.rar (61.2 Кб, 151 просмотров) |
Решение
Darkness190, теперь понятно, WhiteMaster правильно сказал, вы не объявили строки и столбцы дгв при умножении (сделайте аналогично сложению, только учтите размерность при умножении матриц)
Кстати говоря при создании лучше очищать строки и столбцы:
для 1 и 2 дгв сделайте тоже самое.
По поводу умножения, то вот:
Darkness190,
писать в сам грид не лучшее решения все делали правильно отдельный массив
проблема не в этом, а в том что как всегда забыли что массив считается с 0 а не с 1 вот и отсюда ошибка
int[,] A = new int[n];
количество элементов то «n» а вот последний индекс n-1
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Приложение, демонстрирующее сложение, умножение матриц, сортировку столбцов матрицы
мне срочно нужен код и форма в window forms visual studio на C# на тему Приложение матрица.
умножение матриц
Подскажите,что не так в коде:перемножаются 2 матрицы,результат их перемножения получается.
Неточное умножение матриц
Здравствуйте, есть код умножения матриц, после его выполнения в консоли выводится результат.
Перемножение матриц, умножение матриц на вектор, сложение матриц
Помогите пожалуйста написать программу, которая производит основные действия с матрицами.
Класс матрицы в Windows Form
windows form и класс
Ребят подскажите как наследовать класс моей форме(изначально форма наследует класс Form,если его.
Создать win form, используя шаблон windows form в clr, однако такого шаблона на моей студии 2013 нет
есть необходимость создать win form используя шаблон windows form в clr, однако такого шаблона на.
Запуск Windows Form Applications на машине с ранними версиями Windows/.Net
Помогите решить проблему, есть приложение WFA написанное на VB.NET Framework 4.0, это приложение.
Ошибка при создании приложения windows form на Windows 7
На windows 8 без проблем работал, решил поставить 7-ку и возникла ошибка . Читал что проблема.
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Есть готовы класс «Матрица». Необходимо из dGV передать матрицу в класс. Я подразумеваю что делать это надо передавая dGV в качестве параметра в конструктор класса «Матрица». Так же необходимо из класса потом записать матрицу в dGV. Подскажите как это можно реализовать.
P.S. Я вписываю матрицу в dGV, запихиваю ее в свой класс, работаю с ним, и ответ выдаю обратно в dGV.
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Windows Form запускается не на всех версиях Windows
Всех приветствую! Случился такой конфуз, сделал лабораторную про программированию, проверил на.
Передача параметров в класс Form()
Здраствуйте, я хочу передать параметр из основной программы в класс Form(), подскажите как это.
Laravel 5 Не видит класс Form
Пытаюсь создать простенькую форму на странице. но постоянно появляются одна и та же ошибка «Class.
Можно ли редактировать главный класс Form?
Здравствуйте! У меня есть переменные, которые используются во всех формах, а т.к. все формы.