返回值如何发送和模态对话框的形式从对话框
Q
从对话框
3
A
回答
5
试试这个。它被设计成与MessageBox相对应的。不过,它并没有改变基于操作系统的样式。它看起来像Vista的。
下面是一个例子,它是从原来的home(一个Paint.NET插件)开始的。 它将展开以适应提示。
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:
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;
}
4
返回值我平时做这样的事情:
public class MyInputDialog : Form {
public static string Execute(string Prompt) {
using (var f = new MyInputDialog()) {
f.lblPrompt.Text = Prompt;
f.ShowModal();
return f.txtInput.Text;
}
}
}
离开了所有的错误处理,如果用户取消什么,等。
1
我建议你Interaction.InputBox
(Microsoft.VisualBasic
参考需要):
inputValue = Interaction.InputBox("Text for the prompt", "Title of the dialog", "");
当用户按下取消时,inputValue
将为""
。
1
这是我会怎么调用对话框
var regStoreForm = new RegisterStoreForm(storeID,password);
if (regStoreForm.ShowDialog(this) == DialogResult.OK)
{
storeID = regStoreForm.StoreId;
password = regStoreForm.StorePassword;
};
regStoreForm.Dispose();
这是对话框的样子
public partial class RegisterStoreForm : Form
{
public int StoreId { get; set; }
public String StorePassword { get; set; }
public RegisterStoreForm(int storeId,string password)
{
InitializeComponent();
StoreId = storeId;
StorePassword = password;
this.textBoxPassword.Text = StorePassword;
this.textBoxStoreId.Text = StoreId.ToString();
}
private void OKbutton_Click(object sender, EventArgs e)
{
StoreId = Convert.ToInt16(textBoxStoreId.Text);
StorePassword = textBoxPassword.Text;
this.DialogResult = DialogResult.OK;
this.Close();
}
}
相关问题
- 1. 从对话框
- 2. 从对话框
- 3. 从对话框
- 4. WindowLeaked从对话框
- 5. Android:如何将对象从对话框传递到对话框
- 6. 从定制对话框
- 7. 从对话框检索HIViewRef
- 8. 从模态对话框
- 9. 从JOptionPane.showOptionDialog返回对话框
- 10. C++从对话框圆角
- 11. 从定制MD-对话框
- 12. 从CQ5组件对话框
- 13. 从主父对话框(MFC)菜单弹出对话框?
- 14. 如何从对话框代码中关闭jQuery UI对话框?
- 15. mfc从另一个对话框更改对话框的光标
- 16. 从初始jQuery对话框触发第二个jQuery对话框
- 17. 如何从jQuery的对话框通过URL来CKEDITOR对话框
- 18. jQuery UI对话框:从DOM消失的对话框元素
- 19. 从对话框打开的c#对话框关闭整个链
- 20. 停止默认onOK从对话框关闭对话框CKEDITOR
- 21. Android从对话框中显示另一个对话框
- 22. 关闭对话框时从jquery对话框中获取数据
- 23. 从qt中的对话框打开新对话框
- 24. 访问AEM对话框域选项从模板对话框
- 25. 从另一个模态对话框引导模态对话框
- 26. 从非模态对话框中检索对话框的值
- 27. 在Fragment中创建对话框,从对话框创建对话框片段,并且想要访问对话框中的对话框的TextViewFragment
- 28. 从对话框启动框架
- 29. Win32 GUI:对话框中的对话框
- 30. FileSystemWatcher +对话框
需要更多的信息。你在用什么框架? – 2009-05-04 04:40:19
一些澄清会很好,是的。在我的回答中,我假设你正在寻找一种类似于MessageBox类的输入框,但它接受一个字符串输入。 – bsneeze 2009-05-04 04:53:50