从剪贴板中的文本中获取单选按钮

时间:2016-05-31 03:54:39

标签: textbox clipboard radio

我在MS Word中看到,我们可以粘贴一些选择题,并保留单选按钮。所以我知道在剪贴板数据中,选中或取消选中的单选按钮仍然存在,但是无法将其粘贴到Textbox或Rich TextBox中,所以我认为唯一简单的方法(无需创建新类型的文本框) )当它仍然在剪贴板数据中时处理单选按钮并用我们喜欢的一些unicode字符替换它。

我的问题是:MS .Net框架是否提供了可以保留单选按钮的文本框?如果没有,则当文本数据在剪贴板中时如何检测单选按钮。

感谢阅读:)

我正在尝试使用这个函数:Clipboard.GetData(“HTML Format”)。ToString(),但是我对标签感到困惑,写了html翻译已经用尽了,可能无法正常工作。

1 个答案:

答案 0 :(得分:0)

我明白了,我认为MS字也会得到单选按钮,因为它会检测到html代码,所以这就是我的工作方式。

if (Clipboard.ContainsData("HTML Format"))
        {                
            string data = Clipboard.GetData("HTML Format").ToString();

            int start, end;
            data = data.Replace(" ", " ");
            //data = data.Replace(Environment.NewLine + "    ", " ");
            string subData;
            while (data.Contains('<') && data.Contains('>'))
            {
                start = data.IndexOf('<');
                end = data.IndexOf('>');
                subData = data.Substring(start, end - start + 1);
                if (subData.Contains("checked="))
                    data = data.Insert(end+1, "`");
                data = data.Remove(start, end - start+1);
            }
            foreach(string str in data.Split(Environment.NewLine.ToCharArray()))
            {
                if (!string.IsNullOrWhiteSpace(str))
                {                        
                    builder.Append(str);
                    builder.Replace("   ",string.Empty);
                    builder.Replace("  ", string.Empty);
                    builder.Append(Environment.NewLine);
                }

            }

            richTextBox1.Text = builder.ToString();
            MessageBox.Show("complete");
            Clipboard.SetText(builder.ToString());
            builder.Clear();
        }

我知道这段代码并不完美,但确实解决了我的问题。