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

相关推荐
hqwest1 小时前
C#WPF实战出真汁08--【消费开单】--餐桌面板展示
c#·wpf·ui设计·wpf界面设计
orangapple1 小时前
WPF 打印报告图片大小的自适应(含完整示例与详解)
c#·wpf
七仔的博客2 小时前
【摸鱼办公神器】七仔的桌面工具超进化 -> 灵卡面板 v1.1.9
windows·神器·摸鱼
码农阿豪2 小时前
Windows从零到一安装KingbaseES数据库及使用ksql工具连接全指南
数据库·windows
CC__xy10 小时前
demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记
windows
★YUI★16 小时前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#
谷宇.17 小时前
【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
游戏·unity·c#·游戏程序·unity3d·游戏开发·游戏编程
LZQqqqqo17 小时前
C# 中 ArrayList动态数组、List<T>列表与 Dictionary<T Key, T Value>字典的深度对比
windows·c#·list
季春二九17 小时前
Windows 11 首次开机引导(OOBE 阶段)跳过登录微软账户,创建本地账户
windows·microsoft
芥子沫18 小时前
Jenkins常见问题及解决方法
windows·https·jenkins