在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,但本案例无需额外处理。

相关推荐
绿龙术士32 分钟前
构建现代化WPF应用:数据驱动开发与高级特性解析
c#·wpf
o0向阳而生0o2 小时前
43、Server.UrlEncode、HttpUtility.UrlDecode的区别?
c#·.net
敲代码的 蜡笔小新2 小时前
【行为型之策略模式】游戏开发实战——Unity灵活算法架构的核心实现策略
unity·设计模式·c#·策略模式
Kookoos2 小时前
【实战】基于 ABP vNext 构建高可用 S7 协议采集平台(西门子 PLC 通信全流程)
后端·物联网·c#·.net
钢铁男儿4 小时前
C# 方法(栈帧)
开发语言·c#
码小跳11 小时前
Halcon案例(一):C#联合Halcon识别路由器上的散热孔
图像处理·c#
周胡杰12 小时前
鸿蒙接入flutter环境变量配置windows-命令行或者手动配置-到项目的创建-运行demo项目
javascript·windows·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
半青年13 小时前
华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
ide·华为·编辑器·电脑·idea·harmonyos·visual studio
神仙别闹13 小时前
基于C#+MySQL实现(WinForm)企业设备使用信息管理系统
开发语言·mysql·c#
czhaii14 小时前
PLC脉冲位置 单片机跟踪读取记录显示
开发语言·c#