C#
程序开始运行有一主窗体:MainForm,在MainForm窗体上有个按钮叫做“新建”,点击“新建”就弹出一个新建数据库的窗体AddFile。在AddFile窗体上有两个按钮,“确定”和“取消”,点击“确定”,就新建数据库成功,成功之后MainForm窗体上的所有控件将激活,(原先是灰色的!不能用)。如果点击AddFile窗体上的“取消”呢!则MainForm窗体上的其他按钮是灰色的不变!
不知道我这样描述各位能不能看的明白!我在线等!有点着急!如果看不明白我可以当场给你解释!
拜托各位高手帮帮忙啊!
程序开始运行有一主窗体:MainForm,在MainForm窗体上有个按钮叫做“新建”,点击“新建”就弹出一个新建数据库的窗体AddFile。在AddFile窗体上有两个按钮,“确定”和“取消”,点击“确定”,就新建数据库成功,成功之后MainForm窗体上的所有控件将激活,(原先是灰色的!不能用)。如果点击AddFile窗体上的“取消”呢!则MainForm窗体上的其他按钮是灰色的不变!
不知道我这样描述各位能不能看的明白!我在线等!有点着急!如果看不明白我可以当场给你解释!
拜托各位高手帮帮忙啊!
如果建成功了,调用DialogResult = DialogResult.OK;
如果没成功,可以提示重新键,或者用DialogResult = DialogResult.Cancel;取消按钮里面用DialogResult = DialogResult.Cancel;MainForm里面AddFile frm = new AddFile();
if (frm.DialogResult == DialogResult.OK)
{
激活所有控件
}
{
this.SetEnabled(false);
AddFileForm frm = new AddFileForm()
using(frm)
{
if(frm.ShowDialog(this)==DialogResult.OK)
{
string dbFile = frm.GetDBFile;//你的AddFileForm 选择一个数据库名,想想应该来自TextBox.Text
if(System.IO.File.Exists(dbFile)==false)return;//可以抛错误; //...创建数据库的代码,由于不知道你用的什么数据库,这里不写代码.
this.SetEnabled(true);
//...
}
} void SetEnabled(bool state)
{
this.mainMenu.MenuItems[0].Enabled = state;//也是示例,设置一些菜单,按钮的可用状态.
//...
}
}
好像显示AddFile要用ShowDialog();
再定义一个事件:public event eventinfo connection;
这里如果你的建立数据库的函数如果有返回值的话(比如成功返回1不成功返回0)那么:
if(新建数据库函数==1)
{
if(this.connection!=null)
this.connection(1);
}
else
{
if(this.connection!=null)
this.connection(0);
}接下来在MAIN窗体中的新建按钮的单击事件中:AddFile addfile=new AddFile();
addfile.eventinfo+=delegate(int i)
{
if(i==1)
激活所有窗体;
else
窗体继续保持灰色不可用状态;
};
addfile.show();关键代码就在这里了,不知楼主是不是需要这样的代码!
点击新建按钮:
if(this.connection!=null)
this.connection(1);
点击取消按钮:
if(this.connection!=null)
this.connection(0);
void btnNewDB_Click(object sender,EventArgs e)
{
this.SetEnabled(false);
AddFileForm frm = new AddFileForm()
frm.MdiParent= this;
frm.Show();
}public void SetEnabled(bool state)
{
this.mainMenu.MenuItems[0].Enabled = state;//也是示例,设置一些菜单,按钮的可用状态.
//...
}public class AddFile : Form
{
//... void btnOK_Click(object sender,EventArgs e)
{
string dbFile = this.GetDBFile;//选择的数据库名,想想应该来自TextBox.Text
if(System.IO.File.Exists(dbFile)==false)return;//可以抛错误; //...创建数据库的代码,由于不知道你用的什么数据库,这里不写代码.
//if(this.CreateDB()==true)
((mainForm)this.MdiParent).SetEnabled(true);
//...
}
}
}
确定按钮.DialogResult = DialogResult.OK
取消按钮.DialogResult = DialogResult.Cancel
在MainForm新建按钮事件里面
AddFile f=new AddFile()
f.ower=this;
f.ShowDialog();
if(f.DialogResult ==DialogResult .ok)
{
//你AddFile点击确定时要执行的东西
//根据你的要求可以判断
if(创建成功)
MainForm上的所有控件的Enabled=false;
else
MainForm上的所有控件的Enabled=true;}
else
{
//AddFile点击取消时执行的东西
//根据你的要求可以让MainForm上的所有控件的Enabled=true;
}
我的运行怎么就这句话就过不了!
确定按钮.DialogResult = DialogResult.OK ---无法对属性所引起赋值---只读,
取消按钮.DialogResult = DialogResult.Cancel ---无法将类型隐式 转换等错误啊 !哥哥!
BtnCancel.DialogResult = DialogResult.Cancel;
也可在AddFileForm中定义个可外部访问的布尔变量
在显示AddFileForm后选择并把结果给变量,然后隐藏窗体,取变量值给主窗体激活控件,然后关闭AddFileForm;
也可在主窗体定义事件,在AddFileForm窗体触发事件,激活控件;
第一个最简单实用
AddFile窗体代码
private void button1_Click(object sender, System.EventArgs e)
{
this.receive();
} // 创建一个委托接收数据
public delegate void Receive();
// 将创建的委托和特定事件关联,在这里特定的事件为receiver
public event Receive receive;MainForm窗体代码
Form2 f=new Form2();
f.Show();
f.receive+=new Form2.Receive(f_receive);
private void f_receive()
{
this.button1.Enabled=false;
}
如果你是初学者是很难理解委托的,其实很多笨方法也是可以实现的,多想想
呵呵;我没仔细看;SORRY