刚试了一下,怎么不可编译呢using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace WindowsDemo { public partial class Window5 : Form { private Form2 _ShowWindow; public Window5() { InitializeComponent(); this.Loaded += new RoutedEventHandler(Window5_Loaded); this.Unloaded += new RoutedEventHandler(Window5_Unloaded); }
private ShowWindow _ShowWindow; public Window5()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Window5_Loaded);
this.Unloaded += new RoutedEventHandler(Window5_Unloaded);
} void Window5_Unloaded(object sender, RoutedEventArgs e)
{
if (_ShowWindow!=null)
{
_ShowWindow = null;
}
} void BtnShowWindow(object sender,RoutedEventArgs e)
{
if (_ShowWindow == null)
{
_ShowWindow = new ShowWindow();
}
_ShowWindow.Show();
}
先将窗体定义成类的成员Fomr1 form1;//申明为类成员
//下列代码放在需要打开窗体那
if (form1 == null||form1 .IsDisposed )//先判断窗体实例是否存在
{
form1 = new Form1();
form1.Show();
}
else
{
form1.WindowState = FormWindowState.Normal;
form1.Show();
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;namespace WindowsDemo
{
public partial class Window5 : Form
{
private Form2 _ShowWindow;
public Window5()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(Window5_Loaded);
this.Unloaded += new RoutedEventHandler(Window5_Unloaded);
}
private void button1_Click(object sender, EventArgs e)
{ }
void Window5_Unloaded(object sender, RoutedEventArgs e)
{
if (_ShowWindow != null)
{
_ShowWindow = null;
}
} void BtnShowWindow(object sender, RoutedEventArgs e)
{
if (_ShowWindow == null)
{
_ShowWindow = new Form2();
}
_ShowWindow.Show();
}
}
}
{
InitializeComponent();
this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
} void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (_ShowWindow != null)
{
_ShowWindow.Dispose();
_ShowWindow = null;
}
} private void button1_Click(object sender, EventArgs e)
{
if (_ShowWindow == null)
{
_ShowWindow = new Form2();
}
_ShowWindow.Show();
}
winform的
{
private Form2 _ShowWindow; public Form1()
{
InitializeComponent();
this.FormClosed += new FormClosedEventHandler(Form1_FormClosed);
} void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (_ShowWindow != null)
{
_ShowWindow.Dispose();
_ShowWindow = null;
}
} private void button1_Click(object sender, EventArgs e)
{
if (_ShowWindow == null)
{
_ShowWindow = new Form2();
}
_ShowWindow.Show();
}
}
声明一个页面级别的全局私有变量
如果要维护弹出框窗体的状态 不显示的时候 用hide() 方法 别用close
private void button3_MouseEnter(object sender, EventArgs e)
{
if (f == null || f.IsDisposed)//先判断窗体实例是否存在
{
f = new Form2();
f.Show();
}
else
{
f.WindowState = FormWindowState.Normal;
f.Show();
}
} private void button3_MouseLeave(object sender, EventArgs e)
{
button2_Click(null, null);
}
刚试了一下,这个方法可以实现的,不知道在DevExpress的GridView中能不能实现了
把数据更新事件写到 VisibleChanged 里去不行? 这样不就执行数据绑定了??
mouseover 事件里 把坐标 和id 传进去 然后show
弹出框窗体 VisibleChanged 事件绑定数据
这样 直接new 一个新的出来 重新绑定 数据源 不就更新了?
就不用在它上面 维护数据状态了
在MouseMove事件中怎么就复杂了呢我做的是在MouseClick事件中,你这个也可以类似处理啊
{
f = new Form2();
f.Show();
}
else
{
f.WindowState = FormWindowState.Normal;
f.Show();
}关闭的时候最好也判断一下,我用的是if (f != null || !f.IsDisposed)//先判断窗体实例是否存在
{
f.Show();
}
这样就可以打开被关闭的床体了
public Form2 frm;//假设你要打开的窗体form2,设全局变量
///////////////////////////////////////以下是具体的打开窗体中的代码///////////////////// if (frm == null || frm.IsDisposed)
{
frm = new Form2();
frm.Visible = true; }
else
{
frm.Visible = true;
}