C# 多个文本框内容复制到剪贴板并拆分粘贴的实现方法问询
C# 剪贴板多文本值存取解决方案
1 先修复复制功能的编译错误
你现有复制代码存在变量名不匹配的问题:StringBuilder 实例命名为 cop,但最后写入剪贴板时调用了未定义的变量 sb,会直接编译失败,修正后代码如下:
private void Btn_Copy_P1_Click(object sender, EventArgs e) { StringBuilder cop = new StringBuilder(); cop.AppendLine(X_Point_1_Rob.Text); cop.AppendLine(Y_Point_1_Rob.Text); cop.AppendLine(Z_Point_1_Rob.Text); cop.AppendLine(Rx_Point_1_Rob.Text); cop.AppendLine(Ry_Point_1_Rob.Text); cop.AppendLine(Rz_Point_1_Rob.Text); Clipboard.SetText(cop.ToString()); }
2 粘贴功能完整实现
因为你是按行拼接的6个文本值,读取时直接按换行符拆分即可,同时增加合法性校验避免剪贴板内容不符合格式时程序崩溃,实现代码如下:
private void Btn_Paste_P2_Click(object sender, EventArgs e) { // 先判断剪贴板是否有文本内容 if (!Clipboard.ContainsText()) { // 可根据业务需要加提示逻辑,比如MessageBox.Show("剪贴板无有效文本"); return; } // 读取剪贴板文本,按系统默认换行符拆分 string[] values = Clipboard.GetText() .Split(new[] { Environment.NewLine }, StringSplitOptions.None); // 校验拆分后的内容长度是否符合要求(至少6行) if (values.Length < 6) { // 可根据业务需要加格式错误提示 return; } // 依次赋值给目标文本框,替换为你自己的目标文本框控件名即可 X_Point_2_Rob.Text = values[0].TrimEnd('\r'); // 兼容特殊换行格式 Y_Point_2_Rob.Text = values[1].TrimEnd('\r'); Z_Point_2_Rob.Text = values[2].TrimEnd('\r'); Rx_Point_2_Rob.Text = values[3].TrimEnd('\r'); Ry_Point_2_Rob.Text = values[4].TrimEnd('\r'); Rz_Point_2_Rob.Text = values[5].TrimEnd('\r'); }
可选优化点
- 如果需要兼容从其他系统复制来的文本,可以把拆分分隔符改成
new[] { "\r\n", "\n", "\r" }适配不同换行格式 - 可根据业务场景增加数值校验逻辑,比如判断拆分后的值是否为合法的数字格式再赋值,避免无效内容写入文本框
内容的提问来源于stack exchange,提问作者Laurent
相关产品推荐
相关产品推荐

