【问题标题】:Get radio button from text in clipboard从剪贴板中的文本获取单选按钮
【发布时间】:2016-05-31 13:34:15
【问题描述】:
我看到在 MS Word 中,我们可以粘贴一些多项选择题,并且保留单选按钮。所以我知道在剪贴板数据中,选中或未选中的单选按钮仍然存在,但无法粘贴到 Textbox 或 Rich TextBox 中,所以我认为唯一简单的方法(无需创建新的文本框) 是在单选按钮仍在剪贴板数据中时处理它,并将其替换为我们喜欢的一些 unicode 字符。
我的问题是:MS .Net 框架是否提供可以保留单选按钮的文本框?如果没有,当文本数据在剪贴板中时如何检测单选按钮。
感谢阅读:)
我正在尝试使用该函数:Clipboard.GetData("HTML Format").ToString(),但我对标签感到困惑,写的 html 翻译已经用尽,可能无法正常工作。
【问题讨论】:
标签:
textbox
clipboard
radio
【解决方案1】:
我知道了,我认为 MS word 也获得了单选按钮,因为它检测到了 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();
}
我知道这段代码并不完美,但它确实解决了我的问题。