C# MessageBox.show 是如何实现等待

网上人说C#没有输入弹出窗口,需要自己实现一个小窗口什么的,但在实现中遇到一个问题:主程序在调用这个输入窗口取用户输入值时必须在用户输入内容并且按“确定”按钮后才能返回,... 网上人说C#没有 输入弹出窗口, 需要自己实现一个小窗口什么的, 但在实现中遇到一个问题: 主程序在调用这个输入窗口取用户输入值时 必须在用户输入内容并且按“确定”按钮后才能返回,那么输入窗口如何实现等待“确定”按钮按下的事件啊?
如果不麻烦的话详细点说, 我是个菜鸟, 学C#没几天,线程什么的还没涉及到。
展开
 我来答
百度网友87e9090507
推荐于2016-10-20 · TA获得超过192个赞
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:66.5万
展开全部
直接把我写的代码给你,很好用的,跟messagebox的调用方法差不多,记得把命名空间改成你自己的:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

#region 直接调用该类的静态ShowInputBox方法就可以实现Microsoft.VisualBasic.Interaction.InputBox,其中Position参数是输入框位置,Title参数是输入框的标题,Prompt参数是提示标签,DefaultResponse可以显示自定义的默认信息。
/*
//具体调用如下:
private void button_Click(object sender, System.EventArgs e)
{
string inMsg = InputSystem.InputBox.ShowInputBox("输入框", "输入信息", string.Empty);
//对用户的输入信息进行检查
if (inMsg.Trim() != string.Empty) MessageBox.Show(inMsg);
else MessageBox.Show("输入为空");
}
*/
#endregion

namespace UVCE
{
/// <summary>
/// InputBox 的摘要说明。
/// </summary>
public class InputBox : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label_Info;
private TextBox textBox_Data;
private Button button_Enter;
private Button button_Esc;
private System.ComponentModel.Container components = null;

private InputBox()
{
InitializeComponent();
this.TopMost = true;
//this.StartPosition = FormStartPosition.CenterScreen;
//inputbox.Location.X = 0; inputbox.Location.Y = 0;
//inputbox.StartPosition = FormStartPosition.CenterScreen;
//inputbox.Left = 0;
//inputbox.Top = 0;
}

protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

private void InitializeComponent()
{
this.label_Info = new System.Windows.Forms.Label();
this.textBox_Data = new System.Windows.Forms.TextBox();
this.button_Enter = new System.Windows.Forms.Button();
this.button_Esc = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// label_Info
//
this.label_Info.BackColor = System.Drawing.SystemColors.ButtonFace;
this.label_Info.FlatStyle = System.Windows.Forms.FlatStyle.System;
this.label_Info.Font = new System.Drawing.Font("SimSun", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label_Info.ForeColor = System.Drawing.Color.Gray;
this.label_Info.Location = new System.Drawing.Point(10, 35);
this.label_Info.Name = "label_Info";
this.label_Info.Size = new System.Drawing.Size(147, 46);
this.label_Info.TabIndex = 1;
this.label_Info.Text = "[Enter]确认|[Esc]取消";
this.label_Info.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// textBox_Data
//
this.textBox_Data.Location = new System.Drawing.Point(7, 7);
this.textBox_Data.Name = "textBox_Data";
this.textBox_Data.Size = new System.Drawing.Size(191, 20);
this.textBox_Data.TabIndex = 2;
this.textBox_Data.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox_Data_KeyDown);
//
// button_Enter
//
this.button_Enter.Location = new System.Drawing.Point(162, 40);
this.button_Enter.Name = "button_Enter";
this.button_Enter.Size = new System.Drawing.Size(42, 18);
this.button_Enter.TabIndex = 3;
this.button_Enter.Text = "确 认";
this.button_Enter.UseVisualStyleBackColor = true;
this.button_Enter.Click += new System.EventHandler(this.button_Enter_Click);
//
// button_Esc
//
this.button_Esc.Location = new System.Drawing.Point(162, 64);
this.button_Esc.Name = "button_Esc";
this.button_Esc.Size = new System.Drawing.Size(42, 19);
this.button_Esc.TabIndex = 4;
this.button_Esc.Text = "取 消";
this.button_Esc.UseVisualStyleBackColor = true;
this.button_Esc.Click += new System.EventHandler(this.button_Esc_Click);
//
// InputBox
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(250, 96);
this.Controls.Add(this.button_Esc);
this.Controls.Add(this.button_Enter);
this.Controls.Add(this.textBox_Data);
this.Controls.Add(this.label_Info);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "InputBox";
this.Text = "InputBox";
this.Load += new System.EventHandler(this.InputBox_Load);
this.ResumeLayout(false);
this.PerformLayout();

}

//对键盘进行响应
private void textBox_Data_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter) { button_Enter_Click(sender, e); }
else if (e.KeyCode == Keys.Escape) { button_Esc_Click(sender, e); }
}
private void button_Enter_Click(object sender, EventArgs e)
{
this.Close();
}
private void button_Esc_Click(object sender, EventArgs e)
{
textBox_Data.Text = string.Empty; this.Close();
}

//显示InputBox
public static string ShowInputBox(int Left, int Top, string Title, string Prompt, string DefaultResponse)
{
InputBox inputbox = new InputBox();
if (Title.Trim() != string.Empty) inputbox.Text = Title;
if (Prompt.Trim() != string.Empty) inputbox.label_Info.Text = Prompt;
if (DefaultResponse.Trim() != string.Empty) inputbox.textBox_Data.Text = DefaultResponse;
inputbox.ShowDialog();
inputbox.Left = Left; inputbox.Top = Top;
return inputbox.textBox_Data.Text;
}
public static string ShowInputBox(FormStartPosition Position, string Title, string Prompt, string DefaultResponse)
{
InputBox inputbox = new InputBox();
inputbox.StartPosition = Position;
if (Title.Trim() != string.Empty) inputbox.Text = Title;
if (Prompt.Trim() != string.Empty) inputbox.label_Info.Text = Prompt;
if (DefaultResponse.Trim() != string.Empty) inputbox.textBox_Data.Text = DefaultResponse;
inputbox.ShowDialog();
return inputbox.textBox_Data.Text;
}
public static string ShowInputBox()
{
return ShowInputBox(FormStartPosition.CenterScreen, string.Empty, string.Empty, string.Empty);
}
public static string ShowInputBox(string Title)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, string.Empty, string.Empty);
}
public static string ShowInputBox(string Title, string Prompt)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, Prompt, string.Empty);
}
public static string ShowInputBox(string Title, string Prompt, string DefaultResponse)
{
return ShowInputBox(FormStartPosition.CenterScreen, Title, Prompt, DefaultResponse);
}

private void InputBox_Load(object sender, EventArgs e)
{

}
}
}
追问
都说我是菜鸟, 你还贴一长串代码干嘛? 
另外,我要的等待的实现, 你都没给, 通篇的都是:
inputbox.ShowDialog();
return inputbox.textBox_Data.Text;
这个一显示窗口就返回Text了, 有用吗?
追答
我不知道你试了没有,这个就是你要的那种效果,你先把代码加到项目里面运行一下看看效果,然后再用调试的方法一行一行 的看看代码是怎么实现的,首先得要你自己实践才行啊
楼下解释的没错
变身神仙M
2011-09-26
知道答主
回答量:32
采纳率:0%
帮助的人:12.8万
展开全部
if(DialogResult.Yes == MessageBox.Show("XXXX?", "警告", MessageBoxButtons.YesNo))
{
XXXXX
}

如果是窗口间传递就声明一个全局变量,然后把控件改为public
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-01-09
展开全部
试验步骤:放好铁架台,铁棒一端沾少许护手霜,另一端不沾并用铁架台固定其中央,用火柴点燃酒精灯,放在铁棒无护手霜一端下面,
试验现象:N分钟后护手霜溶化,
试验结论:铁棒有导热作用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luzhan__326454
推荐于2018-05-17 · TA获得超过124个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:163万
展开全部
inputbox.ShowDialog();
return inputbox.textBox_Data.Text;
这个一显示窗口就返回Text了, 有用吗?

?????????怎么会一显示就返回TEXT。。

ShowDialog为模式显示。和MessageBox一样,需要窗体关闭后才会执行后面的代码。也就是说
当inputbox窗体关闭后,return inputbox.textBox_Data.Text;才会执行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
份荷340
2011-09-26 · TA获得超过123个赞
知道答主
回答量:475
采纳率:0%
帮助的人:261万
展开全部
c#中一般默认的方法修饰符就是private 如果是外部方法需要调用的话,就要将修饰符写成public,像void show()就是
private void show()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式