放血,有关隐形重写Show、Showdialog方法的技巧(win窗体权限判断)
如题,见bloghttp://blog.csdn.net/jetlun/archive/2009/09/07/4529221.aspx
--------------------编程问答-------------------- 看了,不知道有什么特别作用. --------------------编程问答-------------------- 在win开发中,隐形重写Show、Showdialog方法的技巧(窗体权限判断)。 --------------------编程问答-------------------- 在窗体的Show或ShowDialog方法里面进行自定义,也就是说在窗体执行load事件之前可判断本窗体是否允许执行下去。可不用在load事件之后来判断。 --------------------编程问答-------------------- 加贴内容:
经常在win开发中,需要在弹出的窗体中,判断权限或参数,在LOAD事件中又不能直接执行Close或Dispose事件。这就需要我们重新找新的方案。很多人都会在窗体的执行前进行判断,但通过实践也不比较麻烦,且假如是后期进行开发判断的话,工作量也很大,而且维护量也可想而知。
其实在窗体执行前的Show或Showdialog方法中做点文章也是可行的。
使用这个方法之前需要首先建立自己的父类(同样是继承于System.Windows.Forms.Form),代码如下:
view plaincopy to clipboardprint?
/// <summary>
/// 我的父类
/// </summary>
public class MyForm : System.Windows.Forms.Form
{
/// <summary>
/// 隐形重写
/// </summary>
public void Show()
{
MessageBox.Show(this.GetType().ToString());//测试弹出的窗体类名
DialogResult MsgBoxResult
= MessageBox.Show("确定要继续吗?",//对话框的显示内容
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,//定义对话框内的图表式样,这里是一个黄色三角型内加一个感叹号
MessageBoxDefaultButton.Button2);//定义对话框的按钮式样
if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是NO(按"N"按钮)
{
base.Show();//继续事件
}
else
{
MessageBox.Show("不再进行任何操作!");
}
}
/// <summary>
/// 隐形重写
/// </summary>
public void ShowDialog()
{
MessageBox.Show(this.GetType().ToString());//测试弹出的窗体类名
DialogResult MsgBoxResult
= MessageBox.Show("确定要继续吗?",//对话框的显示内容
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,//定义对话框内的图表式样,这里是一个黄色三角型内加一个感叹号
MessageBoxDefaultButton.Button2);//定义对话框的按钮式样
if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是NO(按"N"按钮)
{
base.ShowDialog();//继续事件
}
else
{
MessageBox.Show("不再进行任何操作!");
}
}
}
/// <summary>
/// 我的父类
/// </summary>
public class MyForm : System.Windows.Forms.Form
{
/// <summary>
/// 隐形重写
/// </summary>
public void Show()
{
MessageBox.Show(this.GetType().ToString());//测试弹出的窗体类名
DialogResult MsgBoxResult
= MessageBox.Show("确定要继续吗?",//对话框的显示内容
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,//定义对话框内的图表式样,这里是一个黄色三角型内加一个感叹号
MessageBoxDefaultButton.Button2);//定义对话框的按钮式样
if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是NO(按"N"按钮)
{
base.Show();//继续事件
}
else
{
MessageBox.Show("不再进行任何操作!");
}
}
/// <summary>
/// 隐形重写
/// </summary>
public void ShowDialog()
{
MessageBox.Show(this.GetType().ToString());//测试弹出的窗体类名
DialogResult MsgBoxResult
= MessageBox.Show("确定要继续吗?",//对话框的显示内容
"提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation,//定义对话框内的图表式样,这里是一个黄色三角型内加一个感叹号
MessageBoxDefaultButton.Button2);//定义对话框的按钮式样
if (MsgBoxResult == DialogResult.Yes)//如果对话框的返回值是NO(按"N"按钮)
{
base.ShowDialog();//继续事件
}
else
{
MessageBox.Show("不再进行任何操作!");
}
}
}
具体的代码里MessageBox.Show(this.GetType().ToString())为验证测试弹出的窗体类名是否一样,是否是在相应的窗体执行操作。用MessageBox.Show方法来验证是否执行了重写的方法。
其次建立自己的两个窗体,是继承于自己建立的父类窗体(MyForm)。
view plaincopy to clipboardprint?
public partial class Form3 : MyForm
{
public Form3()
{
InitializeComponent();
}
}
public partial class Form2 : MyForm
{
public Form3()
{
InitializeComponent();
}
}
public partial class Form3 : MyForm
{
public Form3()
{
InitializeComponent();
}
}
public partial class Form2 : MyForm
{
public Form3()
{
InitializeComponent();
}
}
Designer代码这里省了不写。
然后建立一个窗体,添加四个按钮来验证重写的方法
代码如下:
view plaincopy to clipboardprint?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2().Show();
}
private void button2_Click(object sender, EventArgs e)
{
new Form2().ShowDialog();
}
private void button4_Click(object sender, EventArgs e)
{
new Form3().ShowDialog();
}
private void button3_Click(object sender, EventArgs e)
{
new Form3().Show();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2().Show();
}
private void button2_Click(object sender, EventArgs e)
{
new Form2().ShowDialog();
}
private void button4_Click(object sender, EventArgs e)
{
new Form3().ShowDialog();
}
private void button3_Click(object sender, EventArgs e)
{
new Form3().Show();
}
}
其界面如下:
分别点击按钮,就出现重写的方法。
如果有执行不成功的话,可以向我索要案例代码,QQ:277512377 Or MSN:jetlun@msn.com
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jetlun/archive/2009/09/07/4529221.aspx --------------------编程问答-------------------- up --------------------编程问答-------------------- □□□■□□□□□■□□□□□□□□□□□□■□□□■□□□□□□
□□□■□□■■■■■■■■□□□□□□□□■□□□□■□□□□□
□□□■□□□□□□□□□□□□□□□□□■□□□□□■□□□□□
■■■■■■□■□□□□■□□□□□□□■□□□□□□□■□□□□
□□□■□□□□■□□■□□□□□□□■□□□□□□□□□■□□□
□□□■□■■■■■■■■■■□□□■□□□□□□□□□□□■□□
□□□■□□□□□■□□□□□□□■□□■■■■■■■■□□□■□
□□□■■□□□□■□□□□□□□□□□□□■□□□□■□□□□□
□□■■□■■■■■■■■■■□□□□□□□■□□□□■□□□□□
■■□■□□□□■□□□■□□□□□□□□□■□□□□■□□□□□
□□□■□□□■□□□□■□□□□□□□□■□□□□□■□□□□□
□□□■□□□□■□□■□□□□□□□□□■□□□□□■□□□□□
□□□■□□□□□■■□□□□□□□□□■□□□□□□■□□□□□
□■□■□□□■■□□■■□□□□□□■□□□□■□■□□□□□□
□□■□□■■□□□□□□■□□□□■□□□□□□■□□□□□□□
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□
补充:.NET技术 , C#