有静态方法show并能返回结果,谢谢了

解决方案 »

  1.   

    也是一个窗体,该一下外观,添加一个你自己的show(),不过它要返回一个值,来确定用户点了那个按钮。
    static bool show()
    {
       this.DhowDillogue();
       return  v;
    }
       
      

  2.   

    你可以考虑用singleton
    先建一个form,假设叫Form2,有标签有确定像messageBox一样;把构造函数私有
    class Form2{
    private static Form2 _form;
    //....
    label caption;
    private string Caption{
      get{return caption.text;}
      set{caption.text = value;}
    }
    private Form2(){
    //initials here...
    }static public Show(string text){
      if(_form == null){
      _form = new Form2();
      }  _form.Caption = text;
      _form.ShowDialog();
    }
    }
      

  3.   

    xinbin1122(我喜欢这个奇怪的世界):
    好像行不通吧,静态方法中能调用this.ShowDialog吧, this也可以说类的实例吧
      

  4.   

    bacon_1982(烟火):
    这种方法好像也行不通,你试过了吗
      

  5.   

    public class jeky{
        public static int showsum(int a,int b){
            return a+b;
        }
    }调用:
    MessageBox.Show(jeky.showsum(3,6).ToString());
      

  6.   

    zhongwanli(想一下,就会可以):是吗? 你写一个MessageBox2:Form 试试看
      

  7.   

    public class myclass
    {
    public myclass()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //

    }
    public static bool show(string showString,string caption)
    {
    DialogResult a=MessageBox.Show(showString,caption,MessageBoxButtons.OKCancel);
    if (a==DialogResult.OK)
    return true;
    else return false;
    }
    这只是一个简单的例子,给你提供了一种思想。
    如果点“确定”会返回 true  然后......
    如果要向messagebox那样功能强大,需要做很多工作。
    }
      

  8.   

    实际上还是用了系统的MessageBox,不过,功能可是实现了,而且可以根据需要,添加自己的功能的。
      

  9.   

    有本事,楼上自己写一个form试一下
      

  10.   

    我觉得楼住的本意可能是现在系统的MessageBox不能满足他的要求,他需要一个功能更强大的来满足自己的要求,最好的办法,当然就是对现有的东西进行功能扩充了。软件重用思想阿  呵呵
      

  11.   

    sgc8228(友个人):  我开始采用的方法和2楼"bacon_1982(烟火)"的思想是一样的,但实际结果行不通,原因你试试就知道了. 但我想弄明白MessageBox究竟是怎么写的
      

  12.   

    我个人的建议,由于临时写的比较简单,剩下的自己扩展:private static string message = "";
    private static Font font = null;public static DialogResult Show(string msg, string caption, MessageBoxButtons buttons)
    {
    message = msg; MsgBox box = new MsgBox(); // 定义并实例化 MsgBox 对象
    font = box.Font; // 返回窗口的字体
    box.Text = caption; // Text 属性设置
    box.Icon = SystemIcons.Application;
    box.Size = new Size(320, 150); // 窗口大小 // 判断加载什么样的按钮
    switch(buttons)
    {
    case MessageBoxButtons.OK : // 判断加载什么样的按钮
    // 动态添加按钮
    Button b = new Button();
    b.Text = "确定(&O)";
    b.Size = new Size(74,23);
    b.Location = new Point(
    (box.Width - b.Width) / 2,
    box.ClientSize.Height - (b.Height + 20));
    b.DialogResult = DialogResult.OK; // 设置按钮的 DialogResult
    b.Select();
    box.Controls.Add(b);
    box.AcceptButton = b; break;
    case MessageBoxButtons.OKCancel :
    break;
    } // 关联窗口的绘制事件
    box.Paint += new PaintEventHandler(box_Paint); return box.ShowDialog(); // 显示对话框
    }private static void box_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
    // 在这个事件里面可以利用 sender 对象返回 MsgBox MsgBox box = (MsgBox)sender; Graphics g = e.Graphics; // 返回 e.Graphics 对象 // 通过 g.MeasureString() 方法 返回字符串的 Size 调整窗口的大小
    // SizeF sf = g.MeasureString(message, font);
    g.DrawIcon(System.Drawing.SystemIcons.Exclamation, 10 , 10);
    g.DrawString(message, font, new SolidBrush(SystemColors.WindowText), 50.0f, 20.0f);
    }然后在另一窗口 Form1 的 Click 事件中加入:
    this.Text = MsgBox.Show("我的消息框", "消息 MessageBox", MessageBoxButtons.OK).ToString();
      

  13.   

    烟火的方法是对的,我刚才发现把form.Enabled设置成false(先是设置一个control,大概未选中,错误的设置到from上去了),  唉.............粗心大意.........该打!!!!!!!, 哈哈