2014-02-03 3 views
2

Я пытаюсь сделать какой-то элемент управления, например Minimize, Exit и drag form, но, похоже, не работает. Я думаю, что проблема с частичным классом, но после поиска 2 часа я не могу найти решение для этой работы.Свойства управления формой в частичном классе

Примечание: Я не могу удалить пространство имен и частично по какой-либо причине. Что я должен изменить, может быть, объявить и т.д. Большое спасибо.

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Text; 
    using System.Windows.Forms; 
    using System.Threading; 
    using System.Net.Sockets; 
    using System.Net; 

    namespace test 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
      } 

//Minimize (Not Work) 
      private void Form1_Resize(object sender, EventArgs e) 
      { 
       if (FormWindowState.Minimized == this.WindowState) 
       { 
        notifyTray.Visible = true; 
        notifyTray.ShowBalloonTip(500); 
        this.Hide(); 
       } 

       else if (FormWindowState.Normal == this.WindowState) 
       { 
        notifyTray.Visible = false; 
       } 
      } 

//Exit (Not Work) 
      private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
      { 
       var window = MessageBox.Show("Wanna Close?", "Warning", MessageBoxButtons.YesNo); 
       if (window == DialogResult.No) e.Cancel = true; 
       else e.Cancel = false; 
      } 

//Drag (Not Work) 
     public bool _dragging = false; 
     public Point _offset; 
     public Point _start_point = new Point(0, 0); 

     void Form1_MouseDown(object sender, MouseEventArgs e) 
     { 
      _dragging = true; // _dragging is your variable flag 
      _start_point = new Point(e.X, e.Y); 
     } 

     void Form1_MouseUp(object sender, MouseEventArgs e) 
     { 
      _dragging = false; 
     } 

     void Form1_MouseMove(object sender, MouseEventArgs e) 
     { 
      if (_dragging) 
      { 
       Point p = PointToScreen(e.Location); 
       Location = new Point(p.X - this._start_point.X, p.Y - this._start_point.Y); 
      } 
     } 

В VB этот код работает нормально.

Благодарим вас за @Tony за точку. мне нужно добавить обработчик событий вручную в C#, как

this.Closing += Form1_FormClosing; //for close button 

Answered

+0

Выполняется ли код в методе? Отладка и проверка. Если не подключить обработчики к соответствующим событиям. – Junaith

+1

Добавили ли вы обработчики событий для всех этих событий (в коде или с помощью конструктора)? Они называются? – Tony

+0

Я пытаюсь сделать ярлык для текста «ОК», если этот метод выполняется, но в метке нет строки. Поэтому я предполагаю, что событие как-то не работает. Я стараюсь в VB, его работе. Нет Ошибка и предупреждение. Спасибо за быстрый ответ. –

ответ

1

Что означает Тони, что в конструкторе вашей формы вы подключаетесь обработчики, такие как

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormClosing); 

и это, где это hooked.The проблема заключается в том, что, вероятно, у вас есть это определено в нескольких файлах (или не зацепил их).

Попробуйте поместить класс в другое пространство имен и проверьте, отправляется ли ваш InitializeComponent дизайнеру, где вы помещаете функции с крючками.

+0

Да, спасибо .. Я понял это сейчас ... Я только начинаю преобразовывать весь свой код VB в C# ... Его работа сейчас ... Как я закрываю этот вопрос? –

+1

Вы уже отметили его как решение, но я не уверен, что вы можете закрыть его, поскольку другие люди могут найти его полезным ... но я также новичок, поэтому, возможно, есть способ. Извините – chuel

+0

Owh хорошо, спасибо за вашу помощь. –

0

«Неполна» ключевое слово указывает на то, что код класса можно найти в нескольких файлах. Дизайнер форм в Visual Studio автоматически создает класс Form1.Designer.cs, где он помещает код для создания элементов управления, которые вы перетаскиваете в форму.

  • При попытке удалить partial ключевое слово из Form1, компилятор скажет вам, что Form1.Designer.cs содержит частичное определение того же класса.
  • Когда вы меняете пространство имен, они становятся отдельными классами, но Form1.cs вызывает InitializeComponent(), который определен в другом классе.
Смежные вопросы