Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
1

Программное добавление в dataGridView

07.10.2017, 18:23. Показов 3438. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я новичок в программирование не судите строго, суть в чем есть 2 формы, на назовем т1 таблица на второй(т2) элементы выполняющие некие функции, нужно по нажатию кнопки на т2 выполнить проверка документа на поиск допустим "треугольник\круг\прямоугольник" следующая проверка на поиск "площади" если есть совпадения(треугольник 5) и в названии и площади то сообщение:"данная запись уже существует";поиск нижней строки таблицы добавление новой пустой и запись в нее
первая колонка(название фигуры) вторая колонка(площадь)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2017, 18:23
Ответы с готовыми решениями:

DataGridView программное добавление строки.
Есть DataGridView привязанная к данным... Нужно программным путем добавить новую строку в таблице....

Программное создание datagridview
Добрый день. Возникла небольшая проблема. Для программного создания datagridview использую...

Программное изменение типа столбца в DataGridView
Подскажите пожалуйста как мне в программе (не в дизайнере) поменять тип столбца, необходимо...

Программное завершение редактирование ячейки в DataGridView
Доброго времени суток, Господа. Подскажите пожалуйста, а как программно вызвать завершение...

18
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
07.10.2017, 18:47  [ТС] 2
Я очень хорошо умею объяснять
Миниатюры
Программное добавление в dataGridView  
0
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 00:22  [ТС] 3
разобрался во всем кроме записи строки в dataGrid

C#
1
2
3
            Model.Triangle triangle = new Triangle(a, b);
            double vol = triangle.Calculate();
            MainForm.dataGridView1.Rows.Add("Треугольник", vol);
все считается и делается в классе, нужно добавить данную строну которая находится на первой форме, пробовал менять с private на public форму, тогда получается ошибка статичности делал static public(не помогло) или же нужна ссылка на элемент
C#
1
2
MainForm mf = new MainForm();
mf.dataGridView1.Rows.Add("Треугольник", vol);
и снова мимо, может вы что то хотя бы в этом вопросе подскажите
0
548 / 479 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
08.10.2017, 00:24 4
Пытался понять, но увы...мешанина слов.
Попробуйте конкретно, по пунктам, например:
1. есть 2 формы, на каждой установлен dataGridView
2. На форме 2 есть кнопка, при клике должно быть выполнено...
-
-
-
В общем что-то подобное
0
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 01:17  [ТС] 5
zna926 , упрощаем абсолютно все, есть:
1.2 формы(ф1 и ф2)
2.на ф1 компонент dataGridViem
3.на ф2 кнопка в которой должен быть смысл обращения к dataGridViem примерно такой
ф1.dataGridViem.Rows.Add("Треугольник", 10);
4.а на ф1 в компоненте dataGridViem должна появиться новая строчка в таблице Треугольник | 10
5.на всякий случай таблица из 2х столбцов (фигура | площадь)
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 10:14 6
Лучший ответ Сообщение было отмечено Havoc212 как решение

Решение

Havoc212,
как вариант:
ф2:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class Form2 : Form
{
    public string Figure { set; get; } //фигура
    public double Square { set; get; }//площадь
    public Form2()
    {
        InitializeComponent();
        btnOK.DialogResult = DialogResult.OK; //диалогрезалт кнопки OK
    }
 
    private void btnOK_Click(object sender, EventArgs e) //при щелчке по OK
    {
        Figure = textBox1.Text; //читаем название фигуры
        Square = double.Parse(textBox2.Text); //читаем площадь
    } 
}
ф1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
 
    private void btnAdd_Click(object sender, EventArgs e) //при щелчке по кнопке Добавить
    {
        Form2 f2 = new Form2(); //создаем объект класса ф2
        if (f2.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
        {
            dataGridView1.Rows.Add(f2.Figure, f2.Square); //берем значения и добавляем строку
        }
    }
}
1
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 11:24  [ТС] 7
я думал на счет этого , что бы вызывать переменные на другой форме, но тогда логика падает в ноль, на ф1 компонент датагрид и кнопка "адд", нажимаю добавить открывается ф2 и должно что то произойти ****** а затем нажимаю кнопку "ок" закрывается ф2 и на ф1 в датагриде строчка. А если я правильно вас понял что получается что при повторном нажатии на "адд" только тогда пройдет запись
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 11:33 8
Цитата Сообщение от Havoc212 Посмотреть сообщение
нажимаю кнопку "ок" закрывается ф2 и на ф1 в датагриде строчка
так и будет
Цитата Сообщение от Havoc212 Посмотреть сообщение
получается что при повторном нажатии на "адд" только тогда пройдет запись
нет
0
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 13:18  [ТС] 9
Попробовал сделать как вы советовали, ошибка та же, "Для нестатического поля, метода или свойства "f2.Figure, f2.Square" требуется ссылка на объект "
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 13:23 10
Цитата Сообщение от Havoc212 Посмотреть сообщение
ошибка та же
Код в студию!
0
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 13:30  [ТС] 11
ф1
C#
1
2
3
4
5
6
7
8
9
public void button1_Click(object sender, EventArgs e)
        {
            Form user = new UserForm();
            user.ShowDialog();
            if (user.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            {
               dataGridView1.Rows.Add("Треугольник", UserForm.Square); //берем значения и добавляем строку
            }
        }
ф2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public partial class UserForm : Form
    {
        public double Square { set; get; }
        public UserForm()
        {
            InitializeComponent();
            OkTriangle.DialogResult = DialogResult.OK;//OkTriangle-название кнопки
        }
    }
 
public void OkTriangle_Click(object sender, EventArgs e)
    {
            Model.Triangle triangle = new Triangle(a, b);
            double vol = triangle.Calculate();
            //MainForm.dataGridView1.Rows.Add("Треугольник", vol);
            Square = double.Parse(vol.ToString("F"));
    }
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 13:38 12
Лучший ответ Сообщение было отмечено Havoc212 как решение

Решение

Havoc212,
Но у меня же не так в коде.
Попробуйте:
C#
1
2
3
4
5
6
7
8
9
public void button1_Click(object sender, EventArgs e)
        {
            UserForm user = new UserForm(); //Если UserForm - класс 2-й формы, то зачем ссылка на базовый класс?
            //user.ShowDialog(); не надо
            if (user.ShowDialog() == DialogResult.OK) //ибо здесь открываем
            {
               dataGridView1.Rows.Add("Треугольник", user.Square); //берем значение по ссылке на экземпляр
            }
        }
А во втором классе можно не усложнять с конвертацией:
C#
1
2
3
4
5
public void OkTriangle_Click(object sender, EventArgs e)
    {
            Model.Triangle triangle = new Triangle(a, b);
            Square = triangle.Calculate(); //сразу пишем в свойство
    }
1
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 13:43  [ТС] 13
Да сработало , а не подскажите где прописать задержку что бы после нажатия ОК не закрывалась форма сразу, спасибо большое
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 13:49 14
Цитата Сообщение от Havoc212 Посмотреть сообщение
что бы после нажатия ОК не закрывалась форма сразу
А зачем?
0
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 20:10  [ТС] 15
ф1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void button1_Click(object sender, EventArgs e)
        {
            UserForm triangle = new UserForm();
            if (triangle.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            {
                dataGridView1.Rows.Add("Треугольник", triangle.SquareTriangle); //берем значения и добавляем строку
            }
            UserForm circle = new UserForm();
            if (circle.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            {
                dataGridView1.Rows.Add("Круг", circle.SquareCircle); //берем значения и добавляем строку
            }
            UserForm rectangle = new UserForm();
            if (rectangle.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            {
                dataGridView1.Rows.Add("Прямоугольник", rectangle.SquareRectangle); //берем значения и добавляем строку
            }
        }
ф2:
C#
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
public partial class UserForm : Form
    {
        public double SquareTriangle { set; get; }
        public double SquareRectangle { set; get; }
        public double SquareCircle { set; get; }
        public UserForm()
        {
            InitializeComponent();
            OkTriangle.DialogResult = DialogResult.OK;
            OkRectangle.DialogResult = DialogResult.OK;
            OkCircle.DialogResult = DialogResult.OK;
        }
    }
 
 
public void button4_Click(object sender, EventArgs e)
        {
            Circle circle = new Circle(r);
            SquareCircle = circle.Calculate();
        }
public void button5_Click(object sender, EventArgs e)
        {
            Model.Rectangle rectangle = new Model.Rectangle(a, b);
            SquareRectangle = rectangle.Calculate();
        }
public void button6_Click(object sender, EventArgs e)
        {
            Model.Triangle triangle = new Triangle(a, b);
            SquareTriangle = triangle.Calculate();
        }
Просто несколько фигур если использовать

Добавлено через 6 часов 6 минут
подскажите в чем ошибка , код выше
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 20:14 16
Цитата Сообщение от Havoc212 Посмотреть сообщение
Просто несколько фигур если использовать
Просто вопрос если непонятен, то что подсказывать?
Объясните на словах, что должно получиться, примерно как в своем сообщении
0
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 20:24  [ТС] 17
okay.....
ф2:
C#
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
public partial class UserForm : Form
    {
        public double SquareTriangle { set; get; }
        public double SquareRectangle { set; get; }
        public double SquareCircle { set; get; }
        public UserForm()
        {
            InitializeComponent();
            OkTriangle.DialogResult = DialogResult.OK;
            OkRectangle.DialogResult = DialogResult.OK;
            OkCircle.DialogResult = DialogResult.OK;
        }
    }
 
 
public void button4_Click(object sender, EventArgs e)
        {
            Circle circle = new Circle(r);
            SquareCircle = circle.Calculate();
        }
public void button5_Click(object sender, EventArgs e)
        {
            Model.Rectangle rectangle = new Model.Rectangle(a, b);
            SquareRectangle = rectangle.Calculate();
        }
public void button6_Click(object sender, EventArgs e)
        {
            Model.Triangle triangle = new Triangle(a, b);
            SquareTriangle = triangle.Calculate();
        }
ф1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void button1_Click(object sender, EventArgs e)
        {
            //UserForm triangle = new UserForm();
            //if (triangle.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            //{
            //    dataGridView1.Rows.Add("Треугольник", triangle.SquareTriangle); //берем значения и добавляем строку
            //}
            //UserForm circle = new UserForm();
            //if (circle.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            //{
            //    dataGridView1.Rows.Add("Круг", circle.SquareCircle); //берем значения и добавляем строку
            //}
            UserForm rectangle = new UserForm();
            if (rectangle.ShowDialog() == DialogResult.OK) //если на ф2 нажали на OK
            {
                dataGridView1.Rows.Add("Прямоугольник", rectangle.SquareRectangle); //берем значения и добавляем строку
            }
        }
если сделать так, то код будет работать отлично но только для "Прямоугольника/треугольника/круга" в зависимости какое из условий вне комента(//) , а нужно для всех 3-х фигур
1.ф1 с датагрид и кнопкой "АДД"
2.ф2 с 3-мя кнопками(Треугольник, Круг, Прямоугольник)
3.при нажатии кнопки "АДД" должна открыться ф2
4.там можно выбрать какую именно из фигур я хочу посчитать и занести в таблицу(т.е. 3 кнопки на выбор)
5.нажал к примеру Прямоугольник в таблице появилась строчка с данными допустим Прямоугольник : 10(так же и другие должны делать треугольник и круг)
6.ф2 не должна закрыться после нажатия ОК, т.к. мб я хочу проверить 2 прямоугольника подряд , 1 треугольник и 1 круг, а нажимать постоянно туда сюда "АДД" не лоигчно
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
08.10.2017, 21:32 18
Лучший ответ Сообщение было отмечено Havoc212 как решение

Решение

Вот пример: Figures.zip
По хорошему, через юзерконтролы и классы фигур нужно делать. Но для простого проекта сгодится.
1
0 / 0 / 0
Регистрация: 07.10.2017
Сообщений: 13
08.10.2017, 21:58  [ТС] 19
спасибо, теперь понял в чем ошибки у меня были
0
08.10.2017, 21:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.10.2017, 21:58
Помогаю со студенческими работами здесь

Программное редактирование текста ячеек DataGridView
На форме есть DataGridView и TextBox. Необходимо сделать редактирование CurrentCell не только из...

Программное добавление и удаление Splitter-ов
Проект C# WinForm. На формe добавлен элемент управления tabPage1, на его первую вкладку - 3...

Программное добавление контакта в Скайп
Спасибо, что прочли этот текст. Мне нужна помощь, как добавить контак в Skype по нажатию на...

Программное добавление и удаление объектов
Добрый день ! Создаю кнопку private void Create_button(string name_button , string...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru