一、例题
设计一个模态对话框。如图。
运行后,1、点击显示模态对话框,弹出模态对话框;
2、在模态对话框里,标题栏输入 文本 ,背景颜色里选择 颜色;点确定后,修改第一个窗体的标题为输入的文本,第一个窗体的背景颜色修改为选择的颜色。
二、我的努力
第一个窗体:form1里的代码如下:
namespace mModleDialog
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_show_Click(object sender, EventArgs e)
{
MyModleDialog mmd = new MyModleDialog();
mmd.ShowDialog ();
if (mmd.DialogResult == DialogResult.OK)
{
this.BackColor = mmd.winColor;
this.Text = mmd.winTitle;
}
}
}
}
第二个窗体(模态对话框)里的代码如下:
namespace mModleDialog
{
public partial class MyModleDialog : Form
{
public MyModleDialog()
{
InitializeComponent();
}
public Color winColor;
public string winTitle;
private void rb_red_CheckedChanged(object sender, EventArgs e)
{
if (rb_red.Checked)
winColor = Color.Red;
}
private void rb_yellow_CheckedChanged(object sender, EventArgs e)
{
if (rb_yellow.Checked)
winColor = Color.Yellow;
}
private void rb_blue_CheckedChanged(object sender, EventArgs e)
{
if (rb_blue.Checked)
winColor = Color.Blue;
}
}
}
三、我的困惑
1、运行后,我发现:背景颜色实现了修改,可标题始终没有实现修改。这是什么原因?
2、后来,我查看程序,发现在 模态对话框里的文本输入,没有传递到第一个窗体(界面)里,这里该如何传递?
这道例题,为了看懂它,我已经耗时2周,虽然有一些突破,比如颜色实现了修改,可文本标题没有实现修改。我不知道如何处理,希望高手大侠不吝赐教!小虾在此先谢谢了。
整整两个星期啊,希望高手大侠在解答的时候能详细、细致一些,缘由是小虾我基础比较弱,需要一步一步讲清。再次谢谢各位!
------解决思路----------------------
不要使用模态对话框
因为模态对话框会阻塞代码的执行,你的主窗体无法获得焦点,也不再执行代码
除非你关闭弹出的窗体
------解决思路----------------------
dialog公开一个event,该事件提供一个字符串参数,或者你的color也可以一起返回
MyModleDialog .NotifyEvent += 相关处理代码