cool999
|
||||||
1 | ||||||
Получение данных с программно созданных элементов27.11.2011, 19:23. Показов 4463. Ответов 26
Метки нет (Все метки)
Использую следующий код для программного создания DataGridView.
Вопрос: Как теперь получить доступ к созданному элементу
|
27.11.2011, 19:23 | |
Ответы с готовыми решениями:
26
Получение данных с программно созданных элементов Получение данных от созданных кодом элементов Получение данных из программно созданных контролов Получение данных из динамически созданных edit ов |
T34
|
|
27.11.2011, 20:51 | 2 |
Не понятно в чем вопрос? А что _grid в программе не доступен? Или хотите из внешнего класса? тогда стоит объявить его public наверное...
|
cool999
|
||||||
28.11.2011, 05:41 | 3 | |||||
"Ссылка на объект не указывает на экземпляр объекта." А если при загрузке формы то от не доступен Вообще я хочу создавать несколько DataGridView и получать с них данные |
T34
|
||||||||||||||||
28.11.2011, 09:37 | 4 | |||||||||||||||
Обратите внимания на следующее.
второй момент если нажать кнопку без строчки
|
cool999
|
||||||
28.11.2011, 18:52 | 5 | |||||
С получением данных все получилось только теперь возникла другая проблема если я этим кодом создаю более одного DataGridView то программа работает только с последним экземпляром возможно ли обратится к предыдущим? или это как-то по другому реализовать надо?
вот код. На форме есть tabControl на нем программно создается Panel в ней уже DataGridView
|
T34
|
|
28.11.2011, 19:45 | 6 |
по моему вы усложняете
DataGridView d1; DataGridView d2; ... и так далее.. DataGridView []GridsArray; GridsArray = new DataGridView[10]; GridsArray[0] = new DataGridView(); ... GridsArray[9] = new DataGridView(); ну и не забывайте им всем делать свои объекты колонки и свои имена давать... ну и в разные места формы класть если вы их показываете |
cool999
|
|
28.11.2011, 20:02 | 7 |
Я хочу попробовать загружать меню из базы данных привязывать к меню таблицы из этой базы и чтоб все это работало динамически без перекомпиляции приложения.
|
T34
|
||||||
29.11.2011, 02:05 | 8 | |||||
и что вас останавливает?
Вам надо использовать ArrayList
Следовательно вам останется только создавать ДатаГриды, и добавлять их в список, и они все будут доступны, и тд и тп. только у меня есть вопрос зачем так сложно? Это же интерфейсный элемент, он нужен если вы хотите его показывать, а если для хранения данных то лучше сделать маленький классик который будет все хранить... |
cool999
|
|
29.11.2011, 05:09 | 9 |
попросили сделать базу в которой возможно придется менять поля (удалять или добавлять новые)
Чтоб каждый раз не компилировать приложение хочу сделать так. и вообще потом на будущее пригодится. |
T34
|
|
29.11.2011, 09:30 | 10 |
Это я понял, это стандартное поведение баз данных. Но причем тут DataGridView не понятно.
|
cool999
|
|
29.11.2011, 17:46 | 11 |
Чтоб допустим одновременно работать с двумя и более таблицами
Может быть я просто не так себе это представляю. Как вообще в таких случаях поступают? |
T34
|
|
29.11.2011, 19:52 | 12 |
Ну например пишут свои таблицы. Или берут DataGrid вместо DataGridView последний сделан для отображения таблицы и управления ей пользователем.
Программу стоит разделит на 2 части, Интерфейс - которая общается с пользователем. И обработку которая делает выборку данных и общение с базами данных. Интерфейс надо продумывать. Если пользователь должен уметь запрашивать таблицы, и ни размер ни количество их не известно. Я бы сделал много оконный интерфейс. Взял бы форму, положил на нее ДатаГридВью настроил все силами визуальной среды. И сделал бы эту форму базовым элементом. Каждый раз когда пользователь хочет получить какую либо таблицу, я бы создавал эту форму целиком, и передавал бы в нее данные. Это удобнее надежнее и понятнее чем создавать где то в недрах датагридвью и потом либо его не показывать, либо пытаться найти на форме место куда его влепить. Элементы отображения должны отображать а не хранить. Для хранения есть другие элементы! |
T34
|
|
30.11.2011, 01:44 | 13 |
Обманул вас DataGrid - просто устаревшая версия DataGridView, для внутреннего хранения и обработки без отображения ArayList надо использовать.
|
cool999
|
|
30.11.2011, 03:21 | 14 |
У меня так не получится я подключаюсь к fireberd используя библиотеку там только программным способом. А вообще примеры на С# таких баз данных есть?
|
T34
|
|
30.11.2011, 09:34 | 15 |
Вы путаете теплое с мягким%)...
когда в визуальной среде вы настраиваете дата грид, она просто всю работу по прописыванию элементов и так далее делает сама, но это же не означает что кода не появляется... А вот когда у вас есть уже настроенный элемент на форме, его можно вместе с формой скопировать, просто нажав Form N1=new Form(); Form N2=new Form(); и если в эту форму добавить еще метод получения данных из таблицы в дата грид, или соединения датагрида с таблицей БД, не важно то останеться только вызвать этот метод Form N1=new Form(); Form N2=new Form(); N1.GetData(,...); N1.GetData(,...); N1.Show(); N2.Show(); а как вы хотели показывать таблицы? ну сделаете их, ну запихаете в них БД а дальше? На 1 форме размещать? а если их 10 будет? |
cool999
|
|
23.12.2011, 18:06 | 16 |
А если их будет 10 я буду переключатся по вкладкам которые тоже будут создаваться. Как к примеру в 1с когда открываете несколько таблиц и появляются вкладки
|
cool999
|
|
23.12.2011, 18:59 | 17 |
Наверное с копированием формы будет проще. Надо только подумать как создавать закладки чтоб переключатся между формами
|
cool999
|
||||||
23.12.2011, 19:23 | 18 | |||||
|
T34
|
|
24.12.2011, 00:53 | 19 |
ваще не мудрено, я тоже бы ругался%) откуда в форме взялся такой метод?
А даже если бы он был, то скорее всего он бы возвращал данные формы и не принимал бы в качестве аргумента другую форму... вообщем это не логично)... а далее если вы обратитесь к конструкторам формы, то не увидите в них конструктора копировщика (принимающего тот же класс на входе) а без этого невозможно сделать копирование... вообщем форму надо делать заново руками, или писать свой класс унаследованный от формы, с добавленным методом копирования. Хотя вряд ли что выйдет, половина данных приватны или защищены, вы их никогда не получите из другой формы.. |
T34
|
|||||||||||
24.12.2011, 01:14 | 20 | ||||||||||
прочитал сообщения до. Хм...! Немного не правильная концепция, зачем копировать форму?
Надо сделать форму, сделать метод отображения таблицы, и давать форме таблицу для отображения. Если надо показать таблицу, надо создать новый экземпляр формы, а не копировать существующую... ща попробую схематично обозначит демо проект!. сделайте проект виндоус апликатион. Добавьте в него новую форму Project-Add windows form пусть это будет например абоут бокс! AboutBox1 На новой форме положите текст бокс, и создайте метод
Это то что вам надо сделать. Форма - отображает таблицу, в ней есть метод заполнения таблицы, и вы просто делаете новые экземпляры класса формы, и даете ей таблицы для отображения (редактирования если хотите). Каждый созданный экземпляр можно добавлять в общий массив форм, если хотите иметь к ним доступ из главной формы всегда, но это не обязательно... С# хорошо сам чистить память. |
24.12.2011, 01:14 | |
24.12.2011, 01:14 | |
Помогаю со студенческими работами здесь
20
Событие MouseClick для программно созданных элементов Получение значений(Text) из динамически созданных элементов(Edit) Изменение программно созданных TextBox по событию программно созданного CheckBox Можно ли обеспечить взаимодействие программно созданных объектов и объектов, созданных мастером Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |