我尝试进行一些表单控件,如Minimize,Exit和drag form,但似乎不起作用。我认为部分类的问题,但搜索后,我找不到解决方案,使这项工作。
注意:由于某种原因,我无法删除命名空间和部分。我必须改变什么,或者宣布等等?
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中代码工作正常。
答案 0 :(得分:1)
Tony意味着您在表单的Designer中挂钩处理程序,例如
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FormClosing);
这就是它被钩住的地方。问题是你可能已经在几个文件中定义了它(或者没有挂钩它们)。
尝试将该类放在不同的命名空间中,并检查您的InitializeComponent
是否转到设置了挂钩函数的设计器。
答案 1 :(得分:0)
“partial”关键字表示可以在多个文件中找到类的代码。 Visual Studio中的表单设计器自动创建一个Form1.Designer.cs
类,其中放置代码以创建拖动到表单上的控件。
partial
中删除Form1
关键字时,编译器会告诉您Form1.Designer.cs
包含同一类的部分定义。 Form1.cs
调用另一个类中定义的InitializeComponent()
。答案 2 :(得分:0)
(代表问题作者发布了解决方案)
感谢@Tony为我指出。我需要像
这样在C#中手动添加事件处理程序this.Closing += Form1_FormClosing; //for close button