在Visual Studio中使用C#开发Windows窗体应用程序时,如何实现点击TextBox弹出修改对话框并更新值的功能

希望点击TextBox时弹出一个对话框,里面显示原值并允许输入新值,确认后更新原TextBox的值。

一,主窗体创建

一、创建主窗体及控件

‌新建Windows窗体项目‌

在Visual Studio中选择 ‌Windows窗体应用(.NET Framework或.NET)‌ 模板创建项目‌。

‌添加主窗体控件‌

向主窗体(如MainForm)拖入一个TextBox控件,命名为txtMain

二,创建修改值子窗体

  1. 添加新窗体‌

右键项目 → ‌添加‌ → ‌Windows窗体‌,命名为EditForm

  1. 设计子窗体界面
csharp 复制代码
 // EditForm窗体控件:
- Label(显示"原值:") + TextBox(命名为txtOldValue,ReadOnly=True)
- Label(显示"新值:") + TextBox(命名为txtNewValue)
- Button(命名为btnOK,Text="确定")
- Button(命名为btnCancel,Text="取消")‌
  1. ‌添加子窗体属性传递数据
csharp 复制代码
public partial class EditForm : Form
{
    public string NewValue { get; private set; }  // 存储用户输入的新值‌:ml-citation{ref="6,7" data="citationList"}
    
    public EditForm(string oldValue)
    {
        InitializeComponent();
        txtOldValue.Text = oldValue;  // 初始化显示原值‌:ml-citation{ref="7" data="citationList"}
    }
}

三,实现交互逻辑

  1. ‌主窗体中绑定TextBox点击事件
csharp 复制代码
// MainForm.cs
private void txtMain_Click(object sender, EventArgs e)
{
    using (EditForm editForm = new EditForm(txtMain.Text))  // 传入当前值‌
    {
        if (editForm.ShowDialog() == DialogResult.OK)  // 模态显示子窗体‌
        {
            txtMain.Text = editForm.NewValue;  // 更新主窗体
        }
    }
}
  1. 子窗体中处理按钮事件
csharp 复制代码
// EditForm.cs
private void btnOK_Click(object sender, EventArgs e)
{
    this.NewValue = txtNewValue.Text;  // 获取用户输入的新值‌
    this.DialogResult = DialogResult.OK;  // 设置对话框结果‌
    this.Close();
}

private void btnCancel_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.Cancel;
    this.Close();
}

四、关键配置点

‌主窗体TextBox属性设置‌

确保txtMain的ReadOnly属性为False以允许修改‌。‌跨窗体线程安全‌

若涉及多线程操作(如异步加载数据),需使用Invoke方法更新UI‌3,但本案例无需额外处理。

相关推荐
waicsdn_haha26 分钟前
GIMP 2.10 开源图像编辑软件安装教程(Windows平台)
windows·开源·gimp·图层管理·平面设计·照片修复·色彩校正
.m1 小时前
CAD2025电脑置要求
windows
鲤籽鲲12 小时前
C# Lambda 表达式 详解
开发语言·c#·c# 知识捡漏
Whappy00114 小时前
第八节:基于Winform框架的串口助手小项目---完结优化《C#编程》
开发语言·c#
Big_潘大师15 小时前
C#程序加密与解密Demo程序示例
c#·加密·软件授权
xcLeigh16 小时前
WPF在特定领域的应用:打造一款专业的图像编辑工具
c#·wpf
PfCoder18 小时前
C# 程序结构
开发语言·c#·.net
猫霸1235419 小时前
Windows编程----进程:环境变量
c++·windows
周万宁.FoBJ19 小时前
如何在rust中解析 windows 的 lnk文件(快捷方式)
开发语言·windows·rust
caoruipeng20 小时前
Windows编程----进程:环境变量
c++·windows·环境变量