81 lines
1.9 KiB
C#
81 lines
1.9 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace TemuKJD.UserComponent;
|
|
|
|
public class InputDialog : Form
|
|
{
|
|
private TextBox txtInput;
|
|
private Button btnOk;
|
|
private Button btnCancel;
|
|
|
|
/// <summary>用户输入的内容(点确定后有效)</summary>
|
|
public string InputText { get; private set; } = string.Empty;
|
|
|
|
public InputDialog(string prompt, string title = "输入", string defaultValue = "")
|
|
{
|
|
// 窗体基本设置
|
|
this.Text = title;
|
|
this.FormBorderStyle = FormBorderStyle.FixedDialog;
|
|
this.StartPosition = FormStartPosition.CenterParent;
|
|
this.MaximizeBox = false;
|
|
this.MinimizeBox = false;
|
|
this.ClientSize = new Size(360, 130);
|
|
|
|
// 提示标签
|
|
var lblPrompt = new Label
|
|
{
|
|
Text = prompt,
|
|
Location = new Point(15, 15),
|
|
AutoSize = true,
|
|
MaximumSize = new Size(330, 0)
|
|
};
|
|
|
|
// 输入框
|
|
txtInput = new TextBox
|
|
{
|
|
Text = defaultValue,
|
|
Location = new Point(15, 45),
|
|
Width = 330
|
|
};
|
|
txtInput.SelectAll();
|
|
|
|
// 确定按钮
|
|
btnOk = new Button
|
|
{
|
|
Text = "确定",
|
|
DialogResult = DialogResult.OK,
|
|
Location = new Point(185, 85),
|
|
Width = 75
|
|
};
|
|
btnOk.Click += (s, e) =>
|
|
{
|
|
InputText = txtInput.Text;
|
|
this.DialogResult = DialogResult.OK;
|
|
this.Close();
|
|
};
|
|
|
|
// 取消按钮
|
|
btnCancel = new Button
|
|
{
|
|
Text = "取消",
|
|
DialogResult = DialogResult.Cancel,
|
|
Location = new Point(270, 85),
|
|
Width = 75
|
|
};
|
|
|
|
this.Controls.AddRange(new Control[] { lblPrompt, txtInput, btnOk, btnCancel });
|
|
this.AcceptButton = btnOk;
|
|
this.CancelButton = btnCancel;
|
|
}
|
|
|
|
/// <summary>便捷静态方法:弹出输入框并返回输入内容,取消返回 null</summary>
|
|
public static string Show(string prompt, string title = "输入", string defaultValue = "")
|
|
{
|
|
using (var dlg = new InputDialog(prompt, title, defaultValue))
|
|
{
|
|
return dlg.ShowDialog() == DialogResult.OK ? dlg.InputText : null;
|
|
}
|
|
}
|
|
} |