Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171

Свойство с пабликом

20.01.2021, 17:54. Показов 3511. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть у меня Button1, через которую я хочу из одной ячейки DataGridView1(Form1) взять значение ID_V и вставить его в другую ячейку DataGridView2 (на Form2).

Вот код кнопочки:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        private void button1_Click(object sender, EventArgs e)
        {
            String ID_V = Convert.ToString(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["iDDataGridViewTextBoxColumn"].Value.ToString());  //productIDDataGridViewTextBoxColumn - берётся из настройки столбцов.
            String Item = Convert.ToString(dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["nameDataGridViewTextBoxColumn"].Value.ToString());
            string message = "Вы хотите выбрать: \n"
                + "Код товара: "+ ID_V + "\n" 
                + "Товар: " + Item + "\n"
                + "Подтверждаете ?";
            string caption = "Внимание!";
            var result = MessageBox.Show(message, caption,
               MessageBoxButtons.YesNo,
               MessageBoxIcon.Question);
 
            //Блок с удалением строки:
            if (result == DialogResult.Yes)
            {
                Form2 f = new Form2();
 
                f.ID_V1 = ID_V;
                f.Show();
            }
        }
Вот на Form2 у меня проблема с кодом:
C#
1
2
3
4
5
 public string ID_V1  // Свойство с пабликом, для доступа из других форм
        {
            get { return dataGridView2.Text; }
            set { dataGridView2.Text = value; }
        }
Я видимо не правильно пишу, тут надо указать конкретную ячейку, так ?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2021, 17:54
Ответы с готовыми решениями:

Основное свойство многочлена тейлора? Что это за свойство?
(о значениях в в точке x0 функции и ее многочлена тейлора, а так же их производных). Так же нужно доказательство для этого свойства, но не...

Как заставить свойство "Text" компонента Label забиндиться на свойство TheChar из пользовательского класса
Здравствуйте, не получается заставить свойство "Text" компонента Label забиндиться на свойство TheChar из моего класса, основанного на...

Передать свойство объекта в свойство объекта в объекте что в массиве
var array = ; function func(a, b, c) { array = {}; array.a = {}; // вместо "a" - аргумент array.a.b = text3; // и здесь. } ...

28
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
25.01.2021, 18:48  [ТС]
Студворк — интернет-сервис помощи студентам
Я видимо не правильно объяснил, получается в RowIndex вставляется номер строки из DataGridView1, а не то что я выделяю изначально в DataGridView2(или DataGridView4 как у меня реально в коде).

Получается:
Выделил я на DataGridView2 строку(номер строки 0), захожу через DataGridViewButtonColumn, в DataGridView1, там выбираю нужную строку(номер 5), нажимаю Button1, а в RowIndex сидит номер не выделенной строки DataGridView2(0), а номер выделенной строки из DataGridView1(5).

Т.е. по моему великому замыслу, должно было быть вот так:
Я выделил на DataGridView2 строку(), захожу через DataGridViewButtonColumn, в DataGridView1, там выбираю нужную строку, нажимаю Button1, и хочу вставить значение из DataGridView1 в DataGridView2(в выделенную ранее в DataGridView2 строку).

Путано наверное всё выглядит)
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
26.01.2021, 12:02
Ну тогда Вам не надо передавать и номер строки тоже:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        public string ID_V1  // Свойство с пабликом, для доступа из других форм
        {
            get { 
                if (dataGridView2.CurrentRow != null)
                    return dataGridView2[2, dataGridView2.CurrentRow.Index].Value.ToString();
                else
                    return string.Empty;
            }
            set {
                if (dataGridView2.CurrentRow != null)
                    dataGridView2[2, dataGridView2.CurrentRow.Index].Value = value; 
            }
        }
Добавлено через 21 минуту
Только это почему вы здесь делаете?
Цитата Сообщение от 7-2-3 Посмотреть сообщение
C++
1
2
3
4
5
6
7
//Блок с удалением строки:
            if (result == DialogResult.Yes)
            {
                Form2 f = new Form2();
                 f.ID_V1 = ID_V;
                f.Show();
            }
При первом нажатии на эту кнопку у вас не открыта форма2. Как вы будете при этом в ней строку выбирать?
1
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
26.01.2021, 13:50
Цитата Сообщение от 7-2-3 Посмотреть сообщение
Т.е. по моему великому замыслу, должно было быть вот так:
Я выделил на DataGridView2 строку(), захожу через DataGridViewButtonColumn, в DataGridView1, там выбираю нужную строку, нажимаю Button1, и хочу вставить значение из DataGridView1 в DataGridView2(в выделенную ранее в DataGridView2 строку).
Бессмысленное занятие. На одной форме делаете и сохраняете изменения, на другой форме их можно отобразить. Или оба грида на одной форме и вы извращаетесь над ними в соответствии с великим замыслом. Но всё это пахнет мазохизмом. Просто напишите, что именно вам надо сделать, и вам подскажут, как это делается (если вы сумеете правильно сформулировать вопрос).
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
26.01.2021, 20:27  [ТС]
Получается действия пользователя выглядят вот так:
Form2→Form1→Form2
Т.е. изначально у пользователя уже открыта Form2.

А нужно это для того, что бы было удобнее из большого списка(Form1(DataGridView1)) выбрать нужную строку(потому что там есть описание того что ищет пользователь), два грида на одной форме не удобно для пользователя, потому что оба грида имеют много строк.

korochinskiy, почти получилось, первое значение вставляется, а вот после следующего перехода(из формы1 в форму2) на вторую строку, открывается новая версия Form2, вместо возврата к первоначальной Form2.

Я вот тут попытался использовать Hide():
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void button1_Click(object sender, EventArgs e)
{
                Form2 f = new Form2();
                f.FormClosed += formClosed;
                this.Hide();
                f.Show();
                f.RowIndex = RowIndex;
                f.ID_V1 = ID_V;
}
 
void formClosed(object sender, FormClosedEventArgs e)
{
    this.Show();
}
Подсмотрел вот тут: Вернуться на предыдущую форму
Но почему то всё равно, открывается новая версия Form2, вместо возврата к первоначальной Form2.

Добавлено через 12 секунд
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
26.01.2021, 21:41
Лучший ответ Сообщение было отмечено 7-2-3 как решение

Решение

Этим вы каждый раз создаете новую форму 2
Цитата Сообщение от 7-2-3 Посмотреть сообщение
C#
1
Form2 f = new Form2();
Поэтому
Цитата Сообщение от 7-2-3 Посмотреть сообщение
Но почему то всё равно, открывается новая версия Form2
Создайте вы уж ее где-нибуть глобально. Например:
C#
1
2
3
4
5
6
7
8
9
10
public partial class Form1 : Form
{
private Form2 f;
//Потом в конструкторе формы1
        public Form1()
        {
            InitializeComponent();
            f = new Form2();
        }
}
Ну а потом в вашей кнопке просто делайте

C#
1
f.Show();
Добавлено через 12 минут
Только тогда при закрытии Form2 она обнулиться и у вас будет f == null. Поэтому вам надо будет переопределить в форме 2
C#
1
2
3
4
5
protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;
    this.WindowState = FormWindowState.Hide;    
}
1
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
28.01.2021, 09:55  [ТС]
Небольшой вопросик, по "переопределить в форме 2": вот этого события OnClosing(CancelEventArgs e) я почему то найти не могу найти на панели свойств, просто вставил в форму2 этот этот код:

C#
1
2
3
4
5
protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;
    this.WindowState = FormWindowState.Hide;    
}
А ей почему то Hide, не нравится.
Миниатюры
Свойство с пабликом  
0
31 / 27 / 8
Регистрация: 25.05.2015
Сообщений: 113
28.01.2021, 11:32
Правильно, этот код надо просто вставить в форму.
C#
1
2
3
4
5
        protected override void OnClosing(CancelEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
        }
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
31.01.2021, 21:46  [ТС]
А разве вот это:
C#
1
f = new Form2();
не создаёт новую форму каждый раз?

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
public partial class Form1 : Form
{
private Form2 f;
//Потом в конструкторе формы1
        public Form1()
        {
            InitializeComponent();
            f = new Form2();
        }
}


Я пока проверяю, может я что то не так написал(понял) в коде, но на данный момент всё равно открывается новая форма, вместо возврата к первоначальной.
0
54 / 6 / 5
Регистрация: 24.01.2019
Сообщений: 171
11.02.2021, 13:26  [ТС]
Не получается обойти "new Form", без неё прога останавливается на Null, а с ней постоянно открывается новая форма, а не первоначальная.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2021, 13:26

Свойство в С++
Добрый день. Интересует общий синтаксис свойства. То есть метод, в котором можно присвоить значение переменной, и вернуть его. В C# это...

Свойство
Здравствуйте! Есть базовый класс Person и производный от него класс Student. Подскажите, пожалуйста, как в Studentе реализовать такое...

Свойство name
Вопрос конечно немного молдованский но всё-таки возможно ли у класса или структуры создать свойство Name аналогичное свойствам...

Свойство элемента
Здравствуйте. Подскажите пожалуйста решение такого вопроса. Нужно вытянуть в header.php некоторое свойство любого елемента, т.е мы нажали...

Свойство hover
Доброй ночи киберфорумцы) Меня мучает такой вопрос: Можно ли с помощью сss сделать так, что бы при навведение блок, контент менялся. То...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru