Модераторы: gambit, Partizan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как обратиться из класса к объекту на форме 
:(
    Опции темы
KuMa1104
Дата 12.11.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 3



Так ну ты понаписал......
Цитата(styu @  12.11.2009,  21:51 Найти цитируемый пост)
Так записать не могу, выдает синтаксическую ошибку

 что ещё за ошибка?

Добавлено @ 22:40
[QUOTE=styu,12.11.2009,  21:51]
Цитата

 Object reference not set to an instance of an object.

И что с этим делать дальше не знаю  smile


Компилятор ругаеться что у тебя нет обекта!!!

Добавлено @ 22:47
Цитата(styu @  12.11.2009,  21:51 Найти цитируемый пост)
в методе я тоже не могу записать, синтаксическая ошибка, так как bool PreFilterMessage(ref Message m);


При вызове функции у тебя параметры задаваемые должны соответствовать её определению т.е.

если есть
Код


void fnc(int a, string b)
{
//бла бла
}



то и вызывать надо

Код

 fnc(7,"AAAA");

так ошибка 
Код

fnc(7);


Добавлено @ 22:51
Стоп...styu
Цитата(styu @  12.11.2009,  21:51 Найти цитируемый пост)
Записала 


Цитата(styu @  6.11.2009,  13:37 Найти цитируемый пост)
 Я только начала изучать VS 


Стю ты девушка??

Добавлено @ 22:53
Хмм... кинь снова код который ты написала после наших советов или самостоятельно вставь это. 

Это сообщение отредактировал(а) KuMa1104 - 12.11.2009, 23:06


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
KuMa1104
Дата 12.11.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 3



почитал твои код...

твои класс переопределяем конструктор 
Код

class MyMessageFilter
{
Form1 formochka;

 public MyMessageFilter(Form1 f)
{
   formochka = f;
}
}


Добавлено через 1 минуту и 38 секунд
теперь через formochka обращайся к своему OleDbDataAdapter , но убедись что он в Form1  обявлен как  public  иначе его видно не будет.

Добавлено через 4 минуты и 43 секунды
Кстати а не сложноватое ли ты задания выбрала для начала знакомства с C#
Цитата(styu @  6.11.2009,  13:37 Найти цитируемый пост)
 Я только начала изучать VS и мне очень сложно и очень много я не понимаю


зачем тогда сразу решила использовать всё это? Ты на С++ до этого писала чтоли??
Код

 [DllImport("user32.dll")]
        public static extern IntPtr FindWindow(string className,string windowName);
        [DllImport("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd,uint msg, IntPtr wParam, IntPtr lParam); 
         }

             public class WindowKiller
         {
        private const uint WM_CLOSE = 0x0010;
        public static void CloseWindow(string className,string windowName)
              {
             IntPtr hWnd = WinManager.FindWindow(className,windowName);
             WinManager.SendMessage(hWnd,WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
               }
          }




--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
Экскалупатор
Дата 13.11.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



styu
Цитата

в методе я тоже не могу записать, синтаксическая ошибка, так как bool PreFilterMessage(ref Message m);


я же написал что надо в вызывающий метод передать ссылку на твою форму.
Цитата

а если в метод то соответственно myMessageFilter.PreFilterMessage("тут какой то message", this)
и все должно работать.


а если в конструкторе добавляешь то при инициализации объекта класса в конструктор надо передать ссылку на твою форму... выложи свой код, код формы и код класса, исправим тут
PM MAIL ICQ   Вверх
KuMa1104
Дата 13.11.2009, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 3



Цитата(Экскалупатор @  13.11.2009,  00:45 Найти цитируемый пост)
 выложи свой код, код формы и код класса, исправим тут

Да.... Пожалуй так будет проще всего.


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
Экскалупатор
Дата 13.11.2009, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



KuMa1104, привет, я и не заметил, что ты тут целые уроки выложил...)))
PM MAIL ICQ   Вверх
KuMa1104
Дата 13.11.2009, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 3



Экскалупатор привет!!!

Цитата(Экскалупатор @  13.11.2009,  01:51 Найти цитируемый пост)
я и не заметил, что ты тут целые уроки выложил...)))

Лиш бы автор топика заметила smile 



--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
Экскалупатор
Дата 13.11.2009, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



я смотрю она появляется от раз в два - четыре дня. значит не сильно нужно...
PM MAIL ICQ   Вверх
KuMa1104
Дата 14.11.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: нет
Всего: 3



Цитата(Экскалупатор @  13.11.2009,  18:59 Найти цитируемый пост)
я смотрю она появляется от раз в два - четыре дня. значит не сильно нужно...


Подождём и увидем, верна ли твоя теория smile 



--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
styu
Дата 1.12.2009, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.12.2008

Репутация: нет
Всего: нет



Только сейчас увидела Ваши советы, честно говоря, думала, что вы меня уже совсем бросили, как необучаемую ;). Советы очень нужны. Я просто на некоторое время забросила код и села изучать теорию. На С++  я не писала, писала на Delphi. Код выложу завтра. Большое Вам спасибо
PM MAIL   Вверх
Экскалупатор
Дата 1.12.2009, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 2
Всего: 24



styu, ты если бы чаще появлялась то видела бы что ты еще не самая "необучаемая". главное что бы ты сама понимала, что делаешь и для чего.
PM MAIL ICQ   Вверх
styu
Дата 1.12.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 1.12.2008

Репутация: нет
Всего: нет



Цитата

styu, ты если бы чаще появлялась то видела бы что ты еще не самая "необучаемая". главное что бы ты сама понимала, что делаешь и для чего.


   smile

Добавлено через 4 минуты и 58 секунд
Выкладываю полностью код
Код

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;




namespace _789
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        public System.Data.DataSet dataSet1;
        private System.Data.DataTable dataTable1;
        private System.Data.DataColumn dataColumn1;
        private System.Data.DataColumn dataColumn2;
        private System.Data.DataColumn dataColumn3;
        private System.Data.DataColumn dataColumn4;
        private System.Data.DataColumn dataColumn5;
        private System.Data.DataColumn dataColumn6;
        private System.Data.DataColumn dataColumn7;
        private System.Data.DataColumn dataColumn8;
        private System.Data.DataColumn dataColumn9;
        private System.Data.DataColumn dataColumn10;
        private System.Data.DataColumn dataColumn11;
        private System.Data.DataColumn dataColumn12;
        private System.Data.DataColumn dataColumn13;
        private System.Data.DataColumn dataColumn14;
        private System.Data.OleDb.OleDbConnection oleDbConnection1;
        public System.Data.OleDb.OleDbDataAdapter oleDbDataAdapter1;
        private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
        private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
        private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
        private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
        private System.Windows.Forms.DataGrid dataGrid1;
        
        /// <summary>
        /// Required designer variable.
        /// </summary>
        /// 
        
        
        private System.ComponentModel.Container components = null;
        public System.Windows.Forms.Button button1;
        private System.Windows.Forms.TextBox textBox1;
        MyMessageFilter myMessageFilter = new MyMessageFilter();  //  вот в этом месте выдают ошибку (No overload for method 'MyMessageFilter' takes '0' arguments) я его конечно понимаю, но как исправить не знаю
        
            
        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();
            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null) 
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() 
        {
            Application.Run(new Form1());
        }


        protected override void OnClosing(CancelEventArgs e)
        {
            Application.RemoveMessageFilter(myMessageFilter);
            base.OnClosing (e);
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad (e);
            Application.AddMessageFilter(myMessageFilter);
        }

                        
        private void Form1_Load(object sender, System.EventArgs e)
        {
            try
            {    
                oleDbDataAdapter1.Fill(dataSet1.Tables["Klapan"]);        // вызов базы
            }
            catch(Exception exc)                                        // Ошибка доступа к базе 
            {
                MessageBox.Show("Ошибка доступа к базе данных.\n" + exc.Message, "Клапаны", MessageBoxButtons.OK, MessageBoxIcon.Error);
                this.Close();
            }
        }
        
        public void button1_Click(object sender, System.EventArgs e)
        {
            oleDbDataAdapter1.Fill(dataSet1.Tables["Klapan"]);        // вызов базы
        }
        
        class MyMessageFilter: IMessageFilter
        {        
            const int WM_KEYDOWN = 0x0100;
            EventArgs e;
            
            Form1 formochka;
            public MyMessageFilter(Form1 f)
            {    
                formochka = f;
            }

            public class WinManager
                {
                    [DllImport("user32.dll")]
                    public static extern IntPtr FindWindow(string className,string windowName);
                    [DllImport("user32.dll")]
                    public static extern int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); 
                }

            public class WindowKiller
            {
                private const uint WM_CLOSE = 0x0010;
                public static void CloseWindow(string className,string windowName)
                {
                    IntPtr hWnd = WinManager.FindWindow(className,windowName);
                    WinManager.SendMessage(hWnd,WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
                }
            }

            private void CloseMessageBox()
            {
                WindowKiller.CloseWindow("#32770",null);
            }
                
            public bool PreFilterMessage(ref Message m)
            {    
                if(m.Msg == WM_KEYDOWN)
                {
                    Keys key = (Keys)(int)m.WParam;
                    switch(key)
                    {
                        case Keys.Delete:
                        {
                            string message = "Эта запись будет удалена. Вы хотите удалить запись?";
                            string caption = "Question";
                            MessageBoxButtons buttons = MessageBoxButtons.YesNo;
                            DialogResult result;
                            result = MessageBox.Show(message, caption, buttons,
                                MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, 
                                MessageBoxOptions.DefaultDesktopOnly);
                            
                            if(result == DialogResult.Yes)
                            { 
                                MessageBox.Show("Так уж и быть удалю!!!");
                            }
                            if(result == DialogResult.No)
                            {                                
                                CloseMessageBox();
                                MessageBox.Show("Можешь меня закрыть!");
                                formochka.oleDbDataAdapter1.Fill(formochka.dataSet1.Tables["Klapan"]);
                            }
                            break;
                        }
                    }
                }
                

                return false;   
            }
                
        }
    }
}



извините, уж очень много получилось
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1305 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.