Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Подсчет пятниц 13) http://www.cyberforum.ru/csharp-beginners/thread908499.html
На форме размещены 2 тектовых поля(Дата1 и Дата2) и кнопка. В текстовых полях пользователь указывет диапазон дат. При нажатии на кнопку программа подсчитывает сколько было пятниц 13-ого в этом...
C# Составить слово
Даны два слова. Напишите программу, которая определяет, можно или нет из букв первого слова составить второе слово. Например, "трикотаж-кот" Ответ: "Да".
Вывод самых частовстрчающихся слов из текста C#
Написать программу, которая анализирует заданный текст и выдаёт наиболее часто встречающиеся слово (через MessageBox).
C# Вычисление стоимости звонка 6. Напишите программу вычисления стоимости телефонного звонка по мобильной связи с учетом скидки в вечернее время, выходные дни, посекундной или поминутной тарификации. На форме 1 текстовое поле... http://www.cyberforum.ru/csharp-beginners/thread908495.html
C# выбор активного изображения http://www.cyberforum.ru/csharp-beginners/thread908494.html
. Создать программу для выбора активного изображения. Программа состоит из 2-х форм. 1-ая форма(главна) содержит изначально пустой компонент PictureBox и кнопку("Выбор"), при нажатии на которую...
Подсчет вводимых символов C#
Программа содержет на форме текстовое поле и лейбл. В текстовом полее вводится произвольный текст, а в лейбле отображается статистика по тексту: общее количество букв, гласных, согласных, пробелов;...
C# Создать функцию IsRusString
Создать функцию IsRusString, проверяющую, состоит ли заданная из русских букв. функция возвращает булевское значение. Если в строке присутствуют символы отличные от русских и англ. букв, функция...
C# Вывод шахматного поля Вывод шахматного поля (приложение Windows Forms). Добавлено через 14 часов 10 минут Хелп люди!) http://www.cyberforum.ru/csharp-beginners/thread908490.html
C# Копирование файла в автозагрузку http://www.cyberforum.ru/csharp-beginners/thread908319.html
Мне нужно добавить файл в автозагрузку. Но есть одно - но... Если файл будет добавлен в автозагрузку, а пользователь удалит сам файл... Поэтому хочу сделать копирование файла, но не совсем выходит....
C# Узнаем адрес Нужно было узнать адрес где храниться файл, а также собственно имя файла. Мне помогли ProRusher и Dragokas . Спасибо вам еще раз. С C# начал работать еще зимой. На время был забросил... За это... http://www.cyberforum.ru/csharp-beginners/thread908249.html
Stelsing
11 / 11 / 5
Регистрация: 21.06.2013
Сообщений: 128
21.06.2013, 21:36  [ТС] 0

Отслеживание изменения DataGridViewComboBoxCell

21.06.2013, 21:36. Просмотров 2331. Ответов 14
Метки (Все метки)

Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

2 sniper_lunev
Вроде получилось.
Вот код результата:
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
public delegate void valchng(object sender, EventArgs e);
    public class MyDataGridViewComboBoxCell : DataGridViewComboBoxCell
    {
        public event valchng ValueChanged;
 
        protected override bool SetValue(int rowIndex, object value)
        {
 
            if (ValueChanged != null && rowIndex!=-1)
            {
 
                base.SetValue(rowIndex, value);
                ValueChanged(this, new EventArgs());
                return true;
 
            } return base.SetValue(rowIndex, value);
 
        }
 
        protected override object GetValue(int rowIndex)
        {
            return base.GetValue(rowIndex);
        }
    }
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
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
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            SetComboBoxCellType objChangeCellType = new SetComboBoxCellType(ChangeCellToComboBox);
            if ((e.RowIndex == 6)||(e.RowIndex == 7)||(e.RowIndex == 10))
            {
                this.dataGridView1.BeginInvoke(objChangeCellType, e.RowIndex);
                bIsComboBox = false;
            }
        }
 
        private void ChangeCellToComboBox(int iRowIndex)
        {
            if (iRowIndex == 6)
            {
                if (bIsComboBox == false)
                {
                    MyDataGridViewComboBoxCell dgComboCell = new MyDataGridViewComboBoxCell();
                    dgComboCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
 
                    //dgComboCell.ValueChanged += new System.EventHandler(this.ValueChanged);
                    //dgComboCell.ValueChanged += new 
                    dgComboCell.ValueChanged += dgComboCell_ValueChanged;
 
                    DataTable dt = new DataTable();
                    dt.Columns.Add("work", typeof(string));
 
                    dt.Rows.Add("Машинист");
                    dt.Rows.Add("Помощник");
                    dt.Rows.Add("Машинист - инструктор");
                    dt.Rows.Add("Водитель");
                    dt.Rows.Add("Дублер");
 
 
                    dgComboCell.DataSource = dt;
                    dgComboCell.ValueMember = "work";
                    dgComboCell.DisplayMember = "work";
                    dgComboCell.Value = dataGridView1.Rows[iRowIndex].Cells[dataGridView1.CurrentCell.ColumnIndex].Value;
 
                    try
                    {
                        //MessageBox.Show(dgComboCell.Value.ToString());
                    }
                    catch
                    { }
                    dataGridView1.Rows[iRowIndex].Cells[dataGridView1.CurrentCell.ColumnIndex] = dgComboCell;
                    bIsComboBox = true;
                }
            }
            if (iRowIndex == 7)
            {
                if (bIsComboBox == false)
                {
                    MyDataGridViewComboBoxCell dgComboCell = new MyDataGridViewComboBoxCell();
                    dgComboCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
 
                    DataTable dt = new DataTable();
                    dt.Columns.Add("class", typeof(string));
 
                    dt.Rows.Add("1 кл");
                    dt.Rows.Add("2 кл");
                    dt.Rows.Add("3 кл");
 
                    dgComboCell.DataSource = dt;
                    dgComboCell.ValueMember = "class";
                    dgComboCell.DisplayMember = "class";
                    if (dataGridView1.Rows[6].Cells[0].Value.ToString() == "Машинист")
                    {
                        dgComboCell.Value = dataGridView1.Rows[iRowIndex].Cells[dataGridView1.CurrentCell.ColumnIndex].Value;
                    }
                    else
                    {
                        dgComboCell.Value = "";
                    }
 
                    dataGridView1.Rows[iRowIndex].Cells[dataGridView1.CurrentCell.ColumnIndex] = dgComboCell;
                    bIsComboBox = true;
                }
            }
 
            if (iRowIndex == 10)
            {
                if (bIsComboBox == false)
                {
                    MyDataGridViewComboBoxCell dgComboCell = new MyDataGridViewComboBoxCell();
                    dgComboCell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
 
                    DataTable dt = new DataTable();
                    dt.Columns.Add("gender", typeof(string));
 
                    dt.Rows.Add("М");
                    dt.Rows.Add("Ж");
 
 
                    dgComboCell.DataSource = dt;
                    dgComboCell.ValueMember = "gender";
                    dgComboCell.DisplayMember = "gender";
                    dgComboCell.Value = dataGridView1.Rows[iRowIndex].Cells[dataGridView1.CurrentCell.ColumnIndex].Value;
 
                    dataGridView1.Rows[iRowIndex].Cells[dataGridView1.CurrentCell.ColumnIndex] = dgComboCell;
                    bIsComboBox = true;
                }
            }
        }
 
        //обработка изменения в списке
        void dgComboCell_ValueChanged(object sender, EventArgs e)
        {
               if (dataGridView1[0, 6].Value != null)
                {
                    if (dataGridView1[0, 6].Value.ToString() != "Машинист")
                    {
                        dataGridView1.Rows[7].Cells[0].ReadOnly = true;
                    }
                    else
                    {
                        dataGridView1.Rows[7].Cells[0].ReadOnly = false;
                        dataGridView1.Rows[7].Cells[0].Value = "";
                    }
                }
        }


Вернуться к обсуждению:
Отслеживание изменения DataGridViewComboBoxCell
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2013, 21:36

Отслеживание изменения значения свойства класса
Доброго всем времени суток! Есть некий класс, которых хранит свойства в виде class SomeClass {...

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

DataGridViewComboBoxCell
Создал DataGridView и в него добавил ячейку типа DataGridViewComboBoxCell После чего...

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