w_parentwindow mywindow = new w_parentwindow(); mywindow.Show();我是想写一函数,可以创建除w_parentwindow的任何类型的窗体 我想,你写的应该不行。你那是new一个空白窗体,除非可以动态继承。要不,达不到效果。
一.简单的是用ShowDialog() 二.复杂的是用单例模式
要new任何窗体,要不就传一个窗体类型type做参数。Form form = System.Activator.CreateInstance(type) as Form;private List<Form> _listForm = new List<Form>(); private void button1_Click(object sender, EventArgs e) { int count = _listForm.Count; //创建不同类型的Form showForm(typeof(FormAlarm),"窗体" + count); showForm(typeof(FormDrag), "窗体" + (count +1)); } private Form showForm(string title) {
//Form form = new Form(); Form form = System.Activator.CreateInstance(type) as Form; form.Text = title; //form.TopMost = true; form.FormClosed += new FormClosedEventHandler(form_FormClosed);
2.暂时说不清楚
确实不会在任务栏上显示,但是我的主界面是最大化的,这样一点主界面,这个窗体就失去焦点了,看不见了。
childForm.ShowDialog(childForm.parent);
并且用单件模式调用窗体.
并且用单件模式调用窗体.
//不会被挡住了
child.TopMost = true;
就相当于动态创建窗体,并且显示,不知各位明白了没?
控制窗口不能移动到主窗口外边,还没想到好办法。在窗体Move事件中判断边界,越界了就放回边界上,我试了这种方法,效果不行,会闪烁。用一个函数管理窗口的new和show 比较简单。
private List<Form> _listForm = new List<Form>();
private void button1_Click(object sender, EventArgs e)
{
int count = _listForm.Count;
showForm("窗体" + count);
}
private Form showForm(string title)
{
Form form = new Form();
form.Text = title;
//form.TopMost = true;
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
_listForm.Add(form); form.Show();
return form;
} void form_FormClosed(object sender, FormClosedEventArgs e)
{
_listForm.Remove(sender as Form);
}
w_parentwindow mywindow = new w_parentwindow();
mywindow.Show();我是想写一函数,可以创建除w_parentwindow的任何类型的窗体
我想,你写的应该不行。你那是new一个空白窗体,除非可以动态继承。要不,达不到效果。
二.复杂的是用单例模式
要new任何窗体,要不就传一个窗体类型type做参数。Form form = System.Activator.CreateInstance(type) as Form;private List<Form> _listForm = new List<Form>();
private void button1_Click(object sender, EventArgs e)
{
int count = _listForm.Count;
//创建不同类型的Form
showForm(typeof(FormAlarm),"窗体" + count);
showForm(typeof(FormDrag), "窗体" + (count +1));
}
private Form showForm(string title)
{
//Form form = new Form();
Form form = System.Activator.CreateInstance(type) as Form;
form.Text = title;
//form.TopMost = true;
form.FormClosed += new FormClosedEventHandler(form_FormClosed);
_listForm.Add(form); form.Show();
return form;
} void form_FormClosed(object sender, FormClosedEventArgs e)
{
_listForm.Remove(sender as Form);
}
showForm(w_parentwindow,"test");//w_parentwindow是一个窗体类
错误信息:w_parentwindow是类型,但此处被当作变量使用