因为"—"在richtext里面表示为"\emdash"
但是粘到剪贴板里就变成了"—"
然后粘回richtext就当普通"-"处理了
这实际上是windows的一个剪贴板bug一个方法是写个事件监视Clipbord,一旦发现有"—"
就 Clipboard.SetText(Clipboard.GetText(), TextDataFormat.Rtf);
这样再粘回来就OK了
但是粘到剪贴板里就变成了"—"
然后粘回richtext就当普通"-"处理了
这实际上是windows的一个剪贴板bug一个方法是写个事件监视Clipbord,一旦发现有"—"
就 Clipboard.SetText(Clipboard.GetText(), TextDataFormat.Rtf);
这样再粘回来就OK了
解决方案 »
- ••••••••••••我在C#里做了一个登录界面需要调用数据库验证,恳请各位帮忙.谢谢!
- 求SQL 语句
- 如何将一个事件的方法传递给另一个事件? 或取消该事件所对应的方法?
- 郁闷了System.InvalidCastException: 指定的转换无效
- ****** 我现在遇到一个问题。在 winform 下,想让一个文本框中只能输入数字,可以带小数点。
- 巨难问题,求教各位大虾!!!!!!!!
- 这个问题怎样解决
- 请问 DataReader 如何获得记录数?????(
- 高分:在asp.net中如何使用ssl,https?(在线等待)
- 求教:关于使用udpclient向多台机器发送信息的问题(呵呵,好像很多人问过都没下文)
- c#中生成静态页面,在静态页面中用Iframe连接一个页面判断跳转问题!拜托大家了
- C# 我想做个类似街机模拟器里按键设置的程序。把键盘输入显示到一个TEXT文本框里。
我跟楼主一样有问题大概跟.net及系统的版本有关...
我这里3.5打sp1补丁系统sp2
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
this.richTextBox1.Text = "字符 ——";
} private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(this.richTextBox1.Text);
} private void button2_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
if (DialogResult.OK == f.ShowDialog())
{
MessageBox.Show(f.richTextBox1.Text);
}
}
}剪切板可以这样实现,但是一个新窗体呢。明明里面是对的。但调用显示出来也变成了-Form2里面就一个public的richTextBox1,一个ok按钮,按下去后this.DialogResult = DialogResult.OK;
建议你
A)检查自己framework的版本
B)实在不行的话就把所有的"—"字符都用Unicode转义码代替(就是像\u5335这样格式的编码)
可见问题似乎与楼主所用之Framework版本有关
A)试着检查/升级Framework
B)用"\u2015"或其他unicode转义字串替换"—"试一下(两者在winform下等效)因为楼主你提出的Form内及跨Form问题我这边无法复原错误,所以无法帮你
只能建议你多下断点调试,看看传递中,及传递后的richtextbox.reachtext有无异常以上