![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
styu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Здравствуйте! Возможно мой вопрос уже звучал на форуме, но я очень прошу помочь. Я только начала изучать VS и мне очень сложно и очень много я не понимаю. Написала обработчик события на нажатие клавиши delete в отдельном классе, т.е когда нажимаешь клавишу delete появляется окно messageBox с двумя кнопками Ok и Cancel, можно по ним либо согласится на удаление записи из базы, либо отменить действие. С кнопками все нормально, но я не могу из этого класса обратиться к oleDb DataAdapter, который находится в классе Form1, чтобы обновить отображение базы в DataGrid, хотя oleDbDataAdapter установлен в Public. Пожалуйста помогите. Может я спрашиваю элементарные вещи, но сама я никак не соображу. Заранее спасибо
|
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
читаем эту тему
ну если будет не понятно, то покажи как ты пытаешься обратиться к своей форме из своего класса? скорее всего твой класс ничего не знает о существовании твоей формы, по этому и не можешь обратиться... ![]()
если честно это у тебя какая то жесть. надо как то более гармонично разрабатывать структуру, и тогда не будут появляться такие вопросы. почему у вас oleDb DataAdapter находиться прямо в форме? и уж совсем не айс то что он public. короче просто жесть... Это сообщение отредактировал(а) Экскалупатор - 6.11.2009, 14:26 |
|||
|
||||
styu |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Form1 fm = new Form1(); fm.OleDbDataAdapter.Fill(DataSet1.Table["База"]); Но ничего не происходит, как я понимаю создается новая форма
Я, конечно, понимаю, что со стороны может это выглядить полной неграмотностью, но пока, к сожалению,у меня нет достаточных знаний в C#, чтобы все гармонично структурировать. На форумах писали, чтобы из класса обратиться к Control-у формы, надо установить его в public или я неправильно поняла? Заранее спасибо за ответ |
||||
|
|||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Ои написано много всё читать лень, ивидал это
переопредели конструктор чтоб он он у тебя как параметр принимал твою форму и использовал ссылку на неё. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
скорее всего(я даже полностью уверен), что у тебя экземпляр fm и та форма которая у тебя показывается это две совершенно разные формы.
у тебя есть класс Program и в нем метод Main в котором есть строки
ты не думала что тут происходит? как раз тут и запускается твоя форма1, а то что ты объявляешь в своем классе новую форму, это уже другая форма1 и в ней нету тех данных которые тебе нужны. Сделай что бы в метод который ты выполняешь передавалась ссылка на уже запущенную форму... покажи код своего класса в котором ты хочешь обратиться к форме. |
|||
|
||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
MyClass { Form1 fm = null; MyClass(Form1 f) { fm = f; } // теперь можне делать любые чёрные дела))) void func() { fm.OleDbDataAdapter.Fill(DataSet1.Table["База"]) } } -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
KuMa1104, теперь ты меня опередил...))))
|
|||
|
||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Аха ха!!!!
Экскалупатор привет! Оперативно работаемс)) Я только хотел это написать)) У тебя как 6 чуство, наверно!!!! -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
KuMa1104, тип того...
styu, относительно архитектуры. нельзя делать public поля(точнее, физически конечно можно, но это неправильно), тебе надо сделать метод который бы управлял этим полем и через него работать. это будет уже что то, а еще лучше убрать это поле совсем, сделать отдельный класс для базы и сделать класс который будет соединять базу с формой. как то так. а иначе каша жесть какая получается. сам года два назад так делал, теперь как взгляну так аж плакать хочется... |
|||
|
||||
KuMa1104 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Тогда уж может быть лучше определить интерфеисы, посредством реализации которых в классе будет осушествляться управление?
Покраине мере это будет гарантировать что класс содержит минимальный набор функций и методов необходимых для работы. Добавлено через 4 минуты и 58 секунд Я имею в виду что форме в принципе всё равно что за класс, главное чтоб он реализовал интерфейс.
А форма работает с классом
-------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||
|
|||||
styu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Спасибо огромное за ответы, я Вам все очень благодарна. Почитав Ваши сообщения поняла, что я очень многого не знаю. Поделитесь, пожалуйста, с чего Вы начинали изучать С#. Заранее спасибо
|
|||
|
||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
С любой книжки которая тебе понравиться))
Я читал Троелсен Эндрю С# и платформа нет. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
styu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
У меня к сожалению ничего не получилось. Выкладываю код класса, может это поможет
Заранее спасибо |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
как я и говорил твой класс ничего не знает о существовании формы.
я так понял у тебя есть класс class MyMessageFilter в котором есть еще другие классы(зачем кстати, для меня осталось загадкой, разбираться не стал) так вот, передай в этот класс ссылку на свою форму, это можно сделать в конструкторе, или в методе который будет ее использовать. например public MyMessageFilter(Form1 form) { } или тут public bool PreFilterMessage(ref Message m, Form1 form) а потом в методе своем пиши form.OleDbDataAdapter и че там тебе надо, если конечно поле OleDbDataAdapter объявлено как public. если ты этот класс используешь в своей форме то вызывай его так MyMessageFilter myMessageFilter = new MyMessageFilter(this);//это если в конструктор ссылку передавать а если в метод то соответственно myMessageFilter.PreFilterMessage("тут какой то message", this) и все должно работать. Это сообщение отредактировал(а) Экскалупатор - 11.11.2009, 00:13 |
|||
|
||||
styu |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Так записать не могу, выдает синтаксическую ошибку
в методе я тоже не могу записать, синтаксическая ошибка, так как bool PreFilterMessage(ref Message m); Записала
Это все компилируется, но при вызове метода PreFilterMessage выдает ошибку: An unhandled exception of type 'System.NullReferenceException' occurred in Project.exe Additional information: Object reference not set to an instance of an object. И что с этим делать дальше не знаю ![]() |
||||||
|
|||||||
KuMa1104 |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Так ну ты понаписал......
что ещё за ошибка? Добавлено @ 22:40 [QUOTE=styu,12.11.2009, 21:51]
Компилятор ругаеться что у тебя нет обекта!!! Добавлено @ 22:47
При вызове функции у тебя параметры задаваемые должны соответствовать её определению т.е. если есть
то и вызывать надо
так ошибка
Добавлено @ 22:51 Стоп...styu Стю ты девушка?? Добавлено @ 22:53 Хмм... кинь снова код который ты написала после наших советов или самостоятельно вставь это. Это сообщение отредактировал(а) KuMa1104 - 12.11.2009, 23:06 -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||||||||
|
|||||||||||
KuMa1104 |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
почитал твои код...
твои класс переопределяем конструктор
Добавлено через 1 минуту и 38 секунд теперь через formochka обращайся к своему OleDbDataAdapter , но убедись что он в Form1 обявлен как public иначе его видно не будет. Добавлено через 4 минуты и 43 секунды Кстати а не сложноватое ли ты задания выбрала для начала знакомства с C#
зачем тогда сразу решила использовать всё это? Ты на С++ до этого писала чтоли??
-------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
||||||
|
|||||||
Экскалупатор |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
styu,
я же написал что надо в вызывающий метод передать ссылку на твою форму.
а если в конструкторе добавляешь то при инициализации объекта класса в конструктор надо передать ссылку на твою форму... выложи свой код, код формы и код класса, исправим тут |
||||
|
|||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Да.... Пожалуй так будет проще всего. -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
KuMa1104, привет, я и не заметил, что ты тут целые уроки выложил...)))
|
|||
|
||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Экскалупатор привет!!!
Лиш бы автор топика заметила ![]() -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
я смотрю она появляется от раз в два - четыре дня. значит не сильно нужно...
|
|||
|
||||
KuMa1104 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 541 Регистрация: 16.4.2009 Где: Ростов-на-Дону Репутация: нет Всего: 3 |
Подождём и увидем, верна ли твоя теория ![]() -------------------- Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце. Время - штука относительная... а время обеда - ещё более относительная |
|||
|
||||
styu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
Только сейчас увидела Ваши советы, честно говоря, думала, что вы меня уже совсем бросили, как необучаемую ;). Советы очень нужны. Я просто на некоторое время забросила код и села изучать теорию. На С++ я не писала, писала на Delphi. Код выложу завтра. Большое Вам спасибо
|
|||
|
||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 2 Всего: 24 |
styu, ты если бы чаще появлялась то видела бы что ты еще не самая "необучаемая". главное что бы ты сама понимала, что делаешь и для чего.
|
|||
|
||||
styu |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.12.2008 Репутация: нет Всего: нет |
![]() Добавлено через 4 минуты и 58 секунд Выкладываю полностью код
извините, уж очень много получилось |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |