从对话框返回值 [英] Return values from dialog box

查看:346
本文介绍了从对话框返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何发送和模态对话框的形式返回值

how to send and return values in modal dialog form

推荐答案

试试这个。它的设计是一个对口的MessageBox。它不会改变它的造型基础上的操作系统,虽然。它看起来像Vista的。

Try this. It's designed to be a counterpart to MessageBox. It doesn't change its styling based on OS, though. It looks like Vista's.

下面是它在行动为例,从它原来的家(一个Paint.NET插件)。
它将扩大以适应提示。

Here's an example of it in action, from it's original home (a Paint.NET plugin). It will expand to fit the prompt.

InputBox.cs:

InputBox.cs:

    internal partial class InputBoxForm : Form
    {
        Size lbltextoriginalsize;
        Size pnlwhiteoroginalsize;
        public InputBoxForm(string text, string defaultvalue, string caption)
        {
            InitializeComponent();
            this.pnlWhite.Resize += new System.EventHandler(this.pnlWhite_Resize);
            this.lblText.Resize += new System.EventHandler(this.lblText_Resize);
            picIcon.Image = SystemIcons.Question.ToBitmap();
            lbltextoriginalsize = lblText.Size;
            pnlwhiteoroginalsize = pnlWhite.Size;
            this.lblText.Text = text;
            this.txtOut.Text = defaultvalue;
            this.Text = caption;
        }

        private void lblText_Resize(object sender, EventArgs e)
        {
            pnlWhite.Size += lblText.Size - lbltextoriginalsize;
        }

        private void pnlWhite_Resize(object sender, EventArgs e)
        {
            this.Size += pnlWhite.Size - pnlwhiteoroginalsize;
        }

        public string Value
        {
            get { return txtOut.Text; }
        }
    }

    /// 
    /// A counterpart to the MessageBox class, designed to look similar (at least on Vista)
    /// 
    public static class InputBox
    {
        public static DialogResult Show(string text, out string result)
        {
            return ShowCore(null, text, null, null, out result);
        }
        public static DialogResult Show(IWin32Window owner, string text, out string result)
        {
            return ShowCore(owner, text, null, null, out result);
        }
        public static DialogResult Show(string text, string defaultValue, out string result)
        {
            return ShowCore(null, text, defaultValue, null, out result);
        }
        public static DialogResult Show(IWin32Window owner, string text, string defaultValue, out string result)
        {
            return ShowCore(owner, text, defaultValue, null, out result);
        }
        public static DialogResult Show(string text, string defaultValue, string caption, out string result)
        {
            return ShowCore(null, text, defaultValue, caption, out result);
        }
        public static DialogResult Show(IWin32Window owner, string text, string defaultValue, string caption, out string result)
        {
            return ShowCore(owner, text, defaultValue, caption, out result);
        }

        private static DialogResult ShowCore(IWin32Window owner, string text, string defaultValue, string caption, out string result)
        {
            InputBoxForm box = new InputBoxForm(text, defaultValue, caption);
            DialogResult retval = box.ShowDialog(owner);
            result = box.Value;
            return retval;
        }
    }



InputBox.Designer.cs:

InputBox.Designer.cs:

    partial class InputBoxForm
    {
        /// 
        /// Required designer variable.
        /// 
        private System.ComponentModel.IContainer components = null;

        /// 
        /// Clean up any resources being used.
        /// 
        /// true if managed resources should be disposed; otherwise, false.
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// 
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// 
        private void InitializeComponent()
        {
            this.pnlWhite = new System.Windows.Forms.Panel();
            this.lblText = new System.Windows.Forms.Label();
            this.picIcon = new System.Windows.Forms.PictureBox();
            this.txtOut = new System.Windows.Forms.TextBox();
            this.btnOK = new System.Windows.Forms.Button();
            this.btnCancel = new System.Windows.Forms.Button();
            this.pnlWhite.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.picIcon)).BeginInit();
            this.SuspendLayout();
            // 
            // pnlWhite
            // 
            this.pnlWhite.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
            this.pnlWhite.BackColor = System.Drawing.Color.White;
            this.pnlWhite.Controls.Add(this.lblText);
            this.pnlWhite.Controls.Add(this.picIcon);
            this.pnlWhite.Controls.Add(this.txtOut);
            this.pnlWhite.Location = new System.Drawing.Point(0, 0);
            this.pnlWhite.Margin = new System.Windows.Forms.Padding(0);
            this.pnlWhite.MinimumSize = new System.Drawing.Size(235, 84);
            this.pnlWhite.Name = "pnlWhite";
            this.pnlWhite.Size = new System.Drawing.Size(235, 84);
            this.pnlWhite.TabIndex = 0;
            // 
            // lblText
            // 
            this.lblText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)));
            this.lblText.AutoSize = true;
            this.lblText.Location = new System.Drawing.Point(64, 26);
            this.lblText.Margin = new System.Windows.Forms.Padding(3, 0, 30, 30);
            this.lblText.MinimumSize = new System.Drawing.Size(159, 0);
            this.lblText.Name = "lblText";
            this.lblText.Size = new System.Drawing.Size(159, 13);
            this.lblText.TabIndex = 2;
            // 
            // picIcon
            // 
            this.picIcon.BackColor = System.Drawing.Color.White;
            this.picIcon.Location = new System.Drawing.Point(25, 26);
            this.picIcon.Name = "picIcon";
            this.picIcon.Size = new System.Drawing.Size(32, 32);
            this.picIcon.TabIndex = 1;
            this.picIcon.TabStop = false;
            // 
            // txtOut
            // 
            this.txtOut.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
            this.txtOut.Location = new System.Drawing.Point(67, 50);
            this.txtOut.Name = "txtOut";
            this.txtOut.Size = new System.Drawing.Size(159, 20);
            this.txtOut.TabIndex = 5;
            // 
            // btnOK
            // 
            this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK;
            this.btnOK.Location = new System.Drawing.Point(42, 96);
            this.btnOK.Name = "btnOK";
            this.btnOK.Size = new System.Drawing.Size(88, 26);
            this.btnOK.TabIndex = 3;
            this.btnOK.Text = "OK";
            this.btnOK.UseVisualStyleBackColor = true;
            // 
            // btnCancel
            // 
            this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.btnCancel.Location = new System.Drawing.Point(138, 96);
            this.btnCancel.Name = "btnCancel";
            this.btnCancel.Size = new System.Drawing.Size(88, 26);
            this.btnCancel.TabIndex = 4;
            this.btnCancel.Text = "Cancel";
            this.btnCancel.UseVisualStyleBackColor = true;
            // 
            // InputBoxForm
            // 
            this.AcceptButton = this.btnOK;
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.CancelButton = this.btnCancel;
            this.ClientSize = new System.Drawing.Size(235, 133);
            this.Controls.Add(this.btnCancel);
            this.Controls.Add(this.btnOK);
            this.Controls.Add(this.pnlWhite);
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "InputBoxForm";
            this.ShowIcon = false;
            this.ShowInTaskbar = false;
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.pnlWhite.ResumeLayout(false);
            this.pnlWhite.PerformLayout();
            ((System.ComponentModel.ISupportInitialize)(this.picIcon)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Panel pnlWhite;
        private System.Windows.Forms.PictureBox picIcon;
        private System.Windows.Forms.Label lblText;
        private System.Windows.Forms.Button btnOK;
        private System.Windows.Forms.Button btnCancel;
        private System.Windows.Forms.TextBox txtOut;
    }

这篇关于从对话框返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆