C# 进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很
C# 进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很,c#,vba,winforms,ms-word,rtf,C#,Vba,Winforms,Ms Word,Rtf,进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很想投票支持这一点。抱歉这么懒;-)谢谢你的评论。我可以复制你的测试。当我们选择将文本置于单元格的中心时,一个不可见的字符将添加到该单元格中。如果我们单击一个空单元格,光标将位于中心。如果按Backspace键,中心格式将消失,光标将移到左侧。当
进入写字板。在那里,我使用了将特殊原始RTF粘贴到Ultraedit中。该代码具有所需的所有格式,并且可以用作模板字符串,该字符串可以用许多单元格填充。我们可以根据需要添加额外的行。@Nick\u如果你能在这个帖子的答案中加入这些内容,那就太棒了。我真的很想投票支持这一点。抱歉这么懒;-)谢谢你的评论。我可以复制你的测试。当我们选择将文本置于单元格的中心时,一个不可见的字符将添加到该单元格中。如果我们单击一个空单元格,光标将位于中心。如果按Backspace键,中心格式将消失,光标将移到左侧。当我们选择多个单元格(粘贴到其中)时,隐藏字符也会被选中,并被剪贴板中的数据替换。在您的情况下,如果使用Shift+End复制源单元格的文本,则中心的隐藏字符也会被复制,您可以粘贴到多行。
Clipboard.SetDataObject(this.dataGridView1.GetClipboardContent());
{\rtf1\ansi\qc
This is some centered text.}
Clipboard.SetData(DataFormats.Rtf, "{\\rtf1\\qc\n{\\b foo}}");
void CopyColumn()
{
if (this.dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
{
try
{
Clipboard.SetDataObject(this.dataGridView1.GetClipboardContent());
string sText = Clipboard.GetText();
string sColumn = FormatColumn(sText);
Clipboard.SetData(DataFormats.Rtf, sColumn); // this will set the proper format of the Uncertainty column in clipboard memory
}
catch (System.Runtime.InteropServices.ExternalException)
{
MessageBox.Show("The Clipboard could not be accessed. Please try again.");
}
}
}
string FormatColumn(string sValues)
{
int nlines = NumLines(sValues);
string[] values = Values(sValues);
string sStart = @"{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang3081{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}}
string sEnd = "}";
string sRowStart = @"\trowd\trgaph85\trleft5\trbrdrl\brdrs\brdrw10 \trbrdrt\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trpaddl85\trpaddr85\trpaddfl3\trpaddfr3
string sRowEnd = @"\cell\row";
string sFormattedColumn = sStart;
string sRow = string.Empty;
for(int i = 0; i < nlines; i++) {
sRow = sRowStart + values[i] + sRowEnd;
sFormattedColumn += sRow;
}
sFormattedColumn += sEnd;
return sFormattedColumn;
}
int NumLines(string sValue)
{
string[] values = sValue.Split('\r');
return values.Length;
}
string[] Values(string sValue)
{
string[] values = sValue.Split('\r');
for(int i = 0; i < values.Length; i++) {
values[i] = values[i].Replace("\n", "");
}
return values;
}