Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Microsoft .NET

  Все выпуски  

RFpro.ru: Microsoft .NET


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10912
∙ повысить рейтинг »
Micren
Статус: Профессор
Рейтинг: 1763
∙ повысить рейтинг »
Александр Чекменёв
Статус: Академик
Рейтинг: 1415
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Microsoft .NET : C#

Номер выпуска:244
Дата выхода:17.05.2013, 01:30
Администратор рассылки:Alexey G. Gladenyuk (Управляющий)
Подписчиков / экспертов:58 / 26
Вопросов / ответов:3 / 6

Консультация # 167181: Здравствуйте. В приложении на VB имеется форма, которая содержит главное меню с вложенными подменю и является родительской к другим формам. В одной из дочерних форм при закрытии необходимо скрыть один из пунктов подменю в родительской форме. Чтобы достучаться до него пришлось написать обработчик события закрытия формы так:

...
Консультация # 145473: hi dear experts!!! уже не знаю сколько пытаюсь занести информацию из массива в таблилцу DataGridView. расскажите последовательность действии и объявления всех переменных (DataGrid, dataSet etc) или хотябы скиньте линк, где это мона на русском прочитать заранее благодарен....
Консультация # 17372 0: Здравствуйте! Возможно, кто-нибудь сталкивался с подобным. Пытаюсь создать собственный ajax-контрол в VS 2008 по этому руководству. Всё нормально компилируется и билдится, но при попытке запустить страницу (asp сайт) с использованием созданного экстен...

Консультация # 167181:

Здравствуйте. В приложении на VB имеется форма, которая содержит главное меню с вложенными подменю и является родительской к другим формам. В одной из дочерних форм при закрытии необходимо скрыть один из пунктов подменю в родительской форме. Чтобы достучаться до него пришлось написать обработчик события закрытия формы так:

Код :
  
 Private Sub NewActForm_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed

        Dim itm, itm2, itm3 As ToolStripMenuItem
        For Each itm In Me.ParentForm.MainMenuStrip.Items
            If itm.Name = "ДействияToolStripMenuItem" Then
                For Each itm2 In itm.DropDownItems
                    If itm2.Name = "АктыToolStripMenuItem" Then
                        For Each itm3 In itm2.DropDownItems
                            If itm3.Name = "ДействияСНовымАктомToolStripMenuItem" Then
                                itm3.Visible = False
                            End If
                        Next
                    End If
                Next
            End If
        Next

    End Sub


код отрабатывает нормально, но он мне не нравится. Всвязи с этим вопрос: как правильно "достучаться" из дочерней формы до itm3 в родительской форме без открытия всех этих переборов итемов менюх и подменюх?
Заранее, спасибо.

Дата отправки: 13.05.2009, 14:32
Вопрос задал: Loststranger (Посетитель)
Всего ответов: 2
Страница онлайн-консультации »


Консультирует Hankir:

Здравствуйте, Loststranger!
При создании (вызове) дочерней формы передавай ссылку на itm3.

Консультировал: Hankir
Дата отправки: 13.05.2009, 16:11

4
В принципе можно, но от этого варианта я отказался в силу необходимости отслеживать в коде такие ссылки, которые могут в итоге быть массовыми. Спасибо.
-----
Дата оценки: 01.01.2008, 00:00

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Evgenijm (10-й класс):

Здравствуйте, Loststranger!

Вот варианты:

1) То безобразие, которое Вам не нравится, можно укоротить так:
ToolStripDropDownItem TS = (ToolStripDropDownItem)this.ParentForm.MainMenuStrip.Items["ДействияToolStripMenuItem"];
TS = (ToolStripDropDownItem)TS.DropDown.Items["АктыToolStripMenuItem"];
TS = (ToolStripDropDownItem)TS.DropDown.Items["ДействияСНовымАктомToolStripMenuItem"];
TS.Visible = false;

2) Самый грязный. Можно сделать поле, которое хранит ДействияСНовымАктомToolStripMenuItem, открытым и обращаться к нему напрямую. Тогда ParentForm надо привести к типу Вашей родительской формы.

3) Можно сделать открытое свойство или метод в родительской форме, который будет сам делать нужное. Вызывать его придется как в варианте 2.

4) В родительской форме создать обработчик закрытия дочерней формы. Этот вариант лучше предыдущих.
private void button1_Click_1(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.MdiParent = this;
f2.FormClosed += ChildClosed;
f2.Show();
}

private void ChildClosed(object sender, EventArgs e)
{
MessageBox.Show("Child Closed");
}

5) Перестроить меню так, чтобы пункты для дочерних окон в них же и находились. Просто создайте у дочернего окна свое меню - и оно "склеится" с родительским. Этот метод самый чистый, но может потребовать существенной переделки. Зато код будет собран там, где должен.


Выбирайте 4й или 5й вариант :)

Консультировал: Evgenijm (10-й класс)
Дата отправки: 13.05.2009, 19:14

5
Очень развёрнутый и понятный ответ. Ожидал в основном ответа в виде пункта 1, но остановился в итоге на варианте 5. Спасибо.
-----
Дата оценки: 01.01.2008, 00:00

Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 145473:

hi dear experts!!!
уже не знаю сколько пытаюсь занести информацию из массива в таблилцу DataGridView. расскажите последовательность действии и объявления всех переменных (DataGrid, dataSet etc) или хотябы скиньте линк, где это мона на русском прочитать


заранее благодарен.

Дата отправки: 30.09.2008, 01:07
Вопрос задал: Sazanovich dmitriy victorovich
Всего ответов: 3
Страница онлайн-консультации »


Консультирует DrakoN:

Здравствуйте, Sazanovich dmitriy victorovich!
В приложении исходник для VS 2008 C#. Можно увидеть как информация загружаеться в DataGridView из группы массивов( один массив одна строка для DataGridView)

Оригинал примера http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx
Дополнительно почитать можно здесь http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rows.aspx

Приложение:

Консультировал: DrakoN
Дата отправки: 30.09.2008, 02:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Челноков Виктор Альбертович (Студент):

Здравствуйте, Sazanovich dmitriy victorovich!
Посмотрите следующий код
//создаем массив
int[,] mas;
mas=new int [2,6];
//заполняем
for (int i = 0; i < 2; i++)
for (int j = 0; j < 6; j++)
mas[i, j] = i * j;
//создаем dataset
DataSet ds = new DataSet();
//создаем datatable
DataTable dt = new DataTable();
//создаем datacolumn
DataColumn id = new DataColumn("id", typeof(int));
DataColumn nom = new DataColumn("nom", typeof(int));
//Добавляем столбцы в таблицу
dt.Columns.AddRange(new DataColumn[] { id, nom });
//добавляем таблицу в dataset
ds.Tables.Add(dt);
//Заполняем dataset из массива

for (int i = 0; i < 2; i++)
for (int j = 0; j < 6; j++)
{
DataRow nr = dt.NewRow();
nr["id"] = mas[i, j];
j++;
nr["nom"]=mas[i, j];
dt.Rows.Add(nr);
}
//Закрепляем изменения
ds.AcceptChanges();
//Связываем dataGridView с datatable
dataGridView1.DataSource =dt;

Консультировал: Челноков Виктор Альбертович (Студент)
Дата отправки: 30.09.2008, 08:01
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Mitya86:

Здравствуйте, Sazanovich dmitriy victorovich!

DataGridView - сложный элемент для отображения табличных данных. Навскидку, есть два варианта работы с этим элементом: записывать данные во внутреннюю структуру элемента, либо создать DataTable, заполнить его и попросить DataGridView смотреть в этот DataTable. Второй вариант лучше, тем, что используя внутренние возможности грида (например сортировка) не будут изменяться исходные данные. Примерный код я написал в приложение.

Приложение:

Консультировал: Mitya86
Дата отправки: 30.09.2008, 12:32
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 173720:

Здравствуйте!
Возможно, кто-нибудь сталкивался с подобным. Пытаюсь создать собственный ajax-контрол в VS 2008 по этому руководству. Всё нормально компилируется и билдится, но при попытке запустить страницу (asp сайт) с использованием созданного экстендера, страница не грузится, выдавая ошибку javascript:
"name: Sys.ArgumentNullException
message: Sys.ArgumentNullException: Значение не может быть неопределенным.
Имя параметра: id"
Перепробовала всё, что пришло в голову, но ничего не помогает. Если кто знает, в чём может быть дело, подскажите, пожалуйста. Проект прилагаю. Отдельно код - в приложении.
Спасибо!

Дата отправки: 26.10.2009, 23:08
Вопрос задал: Киселёва Алёна aka Verena (Академик)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Evnik:

Здравствуйте, Verena.
Убедитесь что все параметры контролов на странице заданы корректно. Например, у меня подобная ошибка возникает, если в TargetLabelID экстендера прописать пустую строку.
В приложении пример разметки формы с корректно настроенными контролами и экстендером из приложенного Вами проекта - должно работать!

Приложение:

Консультировал: Evnik
Дата отправки: 27.10.2009, 06:14

5
Спасибо за советы :)
-----
Дата оценки: 28.10.2009, 18:47

Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное