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

相关推荐
xiaowu0808 分钟前
C#调用 C++ DLL 加载地址方式选择
开发语言·c++·c#
非凡ghost25 分钟前
MPC-QT视频播放器(基于Qt框架播放器)
开发语言·windows·qt·音视频·软件需求
ysy164806723932 分钟前
Docker安装(Windows版)
windows·docker·容器
珂玥c3 小时前
windows系统nfs挂载
运维·windows·ssh·remmina·cygwin
wok1573 小时前
Windows 上使用 Docker Desktop 教程
windows·docker·容器
码农学院4 小时前
使用腾讯翻译文本
服务器·数据库·c#
马踏岛国赏樱花4 小时前
Windows与Ubuntu双系统,挂载D/E盘到Ubuntu下时只能读的问题
linux·windows·ubuntu
ulias2124 小时前
AVL树的实现
开发语言·数据结构·c++·windows
96774 小时前
python基础自学
开发语言·windows·python
十幺卜入4 小时前
Unity3d C# 基于安卓真机调试日志抓取拓展包(Android Logcat)
android·c#·unity 安卓调试·unity 安卓模拟·unity排查问题