程序开始运行有一主窗体:MainForm,在MainForm窗体上有个按钮叫做“新建”,点击“新建”就弹出一个新建数据库的窗体AddFile。在AddFile窗体上有两个按钮,“确定”和“取消”,点击“确定”,就新建数据库成功,成功之后MainForm窗体上的所有控件将激活,(原先是灰色的!不能用)。如果点击AddFile窗体上的“取消”呢!则MainForm窗体上的其他按钮是灰色的不变!
不知道我这样描述各位能不能看的明白!我在线等!有点着急!如果看不明白我可以当场给你解释!
拜托各位高手帮帮忙啊!
27 个解决方案
#1
AddFile窗体里面
确定按钮事件里面建数据库
如果建成功了,调用DialogResult = DialogResult.OK;
如果没成功,可以提示重新键,或者用DialogResult = DialogResult.Cancel;
取消按钮里面用DialogResult = DialogResult.Cancel;
MainForm里面
AddFile frm = new AddFile();
if (frm.DialogResult == DialogResult.OK)
{
激活所有控件
}
确定按钮事件里面建数据库
如果建成功了,调用DialogResult = DialogResult.OK;
如果没成功,可以提示重新键,或者用DialogResult = DialogResult.Cancel;
取消按钮里面用DialogResult = DialogResult.Cancel;
MainForm里面
AddFile frm = new AddFile();
if (frm.DialogResult == DialogResult.OK)
{
激活所有控件
}
#2
你有没有新建数据库的方法实现?用的什么数据库(是SQL还是ACCESS...)?
void btnNewDB_Click(object sender,EventArgs e)
{
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;//也是示例,设置一些菜单,按钮的可用状态.
//...
}
}
#3
通过AddFile窗体上按钮的返回值DialogResult实现,当按"确定"时返回OK;按下"取消"时返回cancel.然后在MainForm中判断窗体的返回值,操作控件是否激活。
好像显示AddFile要用ShowDialog();
好像显示AddFile要用ShowDialog();
#4
判断frm.ShowDialog(this)==DialogResult.OK 就行了,后面就是激活控件了
#5
楼主看好了,代码如下:
首先在ADDFILE窗体文件中定义一个委托:public delegate void eventinfo(int i);
再定义一个事件: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();
关键代码就在这里了,不知楼主是不是需要这样的代码!
首先在ADDFILE窗体文件中定义一个委托:public delegate void eventinfo(int i);
再定义一个事件: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();
关键代码就在这里了,不知楼主是不是需要这样的代码!
#6
楼主也可以把这里改成你说的:
点击新建按钮:
if(this.connection!=null)
this.connection(1);
点击取消按钮:
if(this.connection!=null)
this.connection(0);
点击新建按钮:
if(this.connection!=null)
this.connection(1);
点击取消按钮:
if(this.connection!=null)
this.connection(0);
#7
连接数据成功
按钮可以使用
如果连接数据库不成功
按钮仍是灰色
按钮可以使用
如果连接数据库不成功
按钮仍是灰色
#8
我忘记说了!MainForm是主窗体。AddFile是子窗体!,怎么样点击子窗体的事件来控制主窗体的按钮是否可用啊 !
#9
建立的是ACCESS数据库!
#10
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);
//...
}
}
}
#11
你可以为主窗体设置属性,AddFile窗体里面来设置这个属性即可。
#12
我写的那个方法不就是你要的功能吗?
#13
在AddFile窗体加载时声明:
确定按钮.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
在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;
}
#14
楼主按我上面的步骤做,可以实现你要的功能
#15
设置那个属性才是呀!都快急死了!都尝试了!就是不行!各位!帮帮忙啊 !
#16
给你说了,按我13楼的方法做,可以实现的,我也这么做的
#17
你的可以吗!
我的运行怎么就这句话就过不了!
确定按钮.DialogResult = DialogResult.OK ---无法对属性所引起赋值---只读,
取消按钮.DialogResult = DialogResult.Cancel ---无法将类型隐式 转换等错误啊 !哥哥!
我的运行怎么就这句话就过不了!
确定按钮.DialogResult = DialogResult.OK ---无法对属性所引起赋值---只读,
取消按钮.DialogResult = DialogResult.Cancel ---无法将类型隐式 转换等错误啊 !哥哥!
#18
BtnOK.DialogResult = DialogResult.OK;
BtnCancel.DialogResult = DialogResult.Cancel;
BtnCancel.DialogResult = DialogResult.Cancel;
#19
你在窗体加载的时候赋这个啊
我所有窗体控制都这么做的,我不信还有问题
我所有窗体控制都这么做的,我不信还有问题
#20
谢谢了!是我的错误!嘿嘿!不好意思!
#21
委托 不会用委托 请楼主跟帖说明
#22
参考一下blog.csdn.net/yistudio
#23
我写的方法就是委托啊,可是那个楼主似乎连听都没听过委托似的!
#24
可以直接给各对话框,根据选择返回的布尔值进行控件激活;
也可在AddFileForm中定义个可外部访问的布尔变量
在显示AddFileForm后选择并把结果给变量,然后隐藏窗体,取变量值给主窗体激活控件,然后关闭AddFileForm;
也可在主窗体定义事件,在AddFileForm窗体触发事件,激活控件;
第一个最简单实用
也可在AddFileForm中定义个可外部访问的布尔变量
在显示AddFileForm后选择并把结果给变量,然后隐藏窗体,取变量值给主窗体激活控件,然后关闭AddFileForm;
也可在主窗体定义事件,在AddFileForm窗体触发事件,激活控件;
第一个最简单实用
#25
用委托,委托就是C#处理这种情况而创造的
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;
}
如果你是初学者是很难理解委托的,其实很多笨方法也是可以实现的,多想想
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;
}
如果你是初学者是很难理解委托的,其实很多笨方法也是可以实现的,多想想
#26
呵呵;我没仔细看;SORRY
#27
各位都是高手啊
#1
AddFile窗体里面
确定按钮事件里面建数据库
如果建成功了,调用DialogResult = DialogResult.OK;
如果没成功,可以提示重新键,或者用DialogResult = DialogResult.Cancel;
取消按钮里面用DialogResult = DialogResult.Cancel;
MainForm里面
AddFile frm = new AddFile();
if (frm.DialogResult == DialogResult.OK)
{
激活所有控件
}
确定按钮事件里面建数据库
如果建成功了,调用DialogResult = DialogResult.OK;
如果没成功,可以提示重新键,或者用DialogResult = DialogResult.Cancel;
取消按钮里面用DialogResult = DialogResult.Cancel;
MainForm里面
AddFile frm = new AddFile();
if (frm.DialogResult == DialogResult.OK)
{
激活所有控件
}
#2
你有没有新建数据库的方法实现?用的什么数据库(是SQL还是ACCESS...)?
void btnNewDB_Click(object sender,EventArgs e)
{
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;//也是示例,设置一些菜单,按钮的可用状态.
//...
}
}
#3
通过AddFile窗体上按钮的返回值DialogResult实现,当按"确定"时返回OK;按下"取消"时返回cancel.然后在MainForm中判断窗体的返回值,操作控件是否激活。
好像显示AddFile要用ShowDialog();
好像显示AddFile要用ShowDialog();
#4
判断frm.ShowDialog(this)==DialogResult.OK 就行了,后面就是激活控件了
#5
楼主看好了,代码如下:
首先在ADDFILE窗体文件中定义一个委托:public delegate void eventinfo(int i);
再定义一个事件: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();
关键代码就在这里了,不知楼主是不是需要这样的代码!
首先在ADDFILE窗体文件中定义一个委托:public delegate void eventinfo(int i);
再定义一个事件: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();
关键代码就在这里了,不知楼主是不是需要这样的代码!
#6
楼主也可以把这里改成你说的:
点击新建按钮:
if(this.connection!=null)
this.connection(1);
点击取消按钮:
if(this.connection!=null)
this.connection(0);
点击新建按钮:
if(this.connection!=null)
this.connection(1);
点击取消按钮:
if(this.connection!=null)
this.connection(0);
#7
连接数据成功
按钮可以使用
如果连接数据库不成功
按钮仍是灰色
按钮可以使用
如果连接数据库不成功
按钮仍是灰色
#8
我忘记说了!MainForm是主窗体。AddFile是子窗体!,怎么样点击子窗体的事件来控制主窗体的按钮是否可用啊 !
#9
建立的是ACCESS数据库!
#10
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);
//...
}
}
}
#11
你可以为主窗体设置属性,AddFile窗体里面来设置这个属性即可。
#12
我写的那个方法不就是你要的功能吗?
#13
在AddFile窗体加载时声明:
确定按钮.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
在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;
}
#14
楼主按我上面的步骤做,可以实现你要的功能
#15
设置那个属性才是呀!都快急死了!都尝试了!就是不行!各位!帮帮忙啊 !
#16
给你说了,按我13楼的方法做,可以实现的,我也这么做的
#17
你的可以吗!
我的运行怎么就这句话就过不了!
确定按钮.DialogResult = DialogResult.OK ---无法对属性所引起赋值---只读,
取消按钮.DialogResult = DialogResult.Cancel ---无法将类型隐式 转换等错误啊 !哥哥!
我的运行怎么就这句话就过不了!
确定按钮.DialogResult = DialogResult.OK ---无法对属性所引起赋值---只读,
取消按钮.DialogResult = DialogResult.Cancel ---无法将类型隐式 转换等错误啊 !哥哥!
#18
BtnOK.DialogResult = DialogResult.OK;
BtnCancel.DialogResult = DialogResult.Cancel;
BtnCancel.DialogResult = DialogResult.Cancel;
#19
你在窗体加载的时候赋这个啊
我所有窗体控制都这么做的,我不信还有问题
我所有窗体控制都这么做的,我不信还有问题
#20
谢谢了!是我的错误!嘿嘿!不好意思!
#21
委托 不会用委托 请楼主跟帖说明
#22
参考一下blog.csdn.net/yistudio
#23
我写的方法就是委托啊,可是那个楼主似乎连听都没听过委托似的!
#24
可以直接给各对话框,根据选择返回的布尔值进行控件激活;
也可在AddFileForm中定义个可外部访问的布尔变量
在显示AddFileForm后选择并把结果给变量,然后隐藏窗体,取变量值给主窗体激活控件,然后关闭AddFileForm;
也可在主窗体定义事件,在AddFileForm窗体触发事件,激活控件;
第一个最简单实用
也可在AddFileForm中定义个可外部访问的布尔变量
在显示AddFileForm后选择并把结果给变量,然后隐藏窗体,取变量值给主窗体激活控件,然后关闭AddFileForm;
也可在主窗体定义事件,在AddFileForm窗体触发事件,激活控件;
第一个最简单实用
#25
用委托,委托就是C#处理这种情况而创造的
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;
}
如果你是初学者是很难理解委托的,其实很多笨方法也是可以实现的,多想想
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;
}
如果你是初学者是很难理解委托的,其实很多笨方法也是可以实现的,多想想
#26
呵呵;我没仔细看;SORRY
#27
各位都是高手啊