我正在构建一个应用程序,我应该在其中捕获多个值并使用它们构建文本:Name
,Age
等。
输出将是TextBox
的纯文本。
我正在尝试将这些信息显示为columns
,因此我尝试将它们与tab
分开以使其更清晰。
例如,而不是:
Ann 26
Sarah 29
Paul 45
我希望它显示为:
Ann 标签 26 Sarah 标签 29保罗标签 45
关于如何insert
标签插入我的文字的任何提示?
答案 0 :(得分:425)
尝试在字符串中使用\t
字符
答案 1 :(得分:406)
哈扎尔与他的\t
是对的。以下是C#的转义字符的完整列表:
\'
单引号。
\"
获得双引号。
\\
反斜杠。
\0
表示空字符。
\a
表示警告字符。
\b
用于退格。
\f
表单Feed。
\n
换行。
\r
回车。
\t
表示水平标签。
\v
表示垂直标签。
\uxxxx
表示unicode字符十六进制值(例如\u0020
)。
\x
与\u
相同,但您不需要前导零(例如\x20
)。
\Uxxxxxxxx
表示unicode字符十六进制值(生成代理项所需的更长形式)。
答案 2 :(得分:70)
使用String.Format
,例如
String.Format("{0}\t{1}", FirstName,Count);
答案 3 :(得分:3)
var text = "Ann@26"
var editedText = text.Replace("@", "\t");
答案 4 :(得分:2)
有几种方法可以做到这一点。最简单的方法是在文本中使用\t
。但是,\t
可能在某些情况下不起作用,例如PdfReport
nuget包。
答案 5 :(得分:2)
string St = String.Format("{0,-20} {1,5:N1}\r", names[ctr], hours[ctr]);
richTextBox1.Text += St;
这很好用,但你必须有一个单行间距的字体。
答案 6 :(得分:1)
使用Microsoft Winform controls
,如果没有我将在下面解释的小变通办法,就不可能正确解决您的问题。
问题
仅使用"\t"
或vbTab
的问题是,当显示多个TextBox且所有TextBox必须遵守对齐方式时,仅"\t"
或{{1} }解决方案将显示始终未正确对齐的内容。
VB.Net中的示例:
vbTab
将显示
如您所见,Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
TextBox1.Text = "Bernard" + vbTab + "32"
TextBox2.Text = "Luc" + vbTab + "47"
TextBox3.Text = "François-Victor" + vbTab + "12"
End Sub
的{{1}}值向右移动,并且与其他两个TextBox的age
值不对齐。
解决方案
要解决此问题,必须使用特定的François-Victor
user32.dll API函数来设置Tabs位置,如下所示。
age
并显示以下表格
您现在可以看到,所有值都正确对齐:-)
备注
文本框的 SendMessage()
属性必须设置为True 。如果将此属性设置为False,则选项卡将像以前一样放置。
如何分配Public Class Form1
Public Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" _
( ByVal hWnd As IntPtr _
, ByVal wMsg As Integer _
, ByVal wParam As Integer _
, ByVal lParam() As Integer _
) As Integer
Private Const EM_SETTABSTOPS As Integer = &HCB
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim tabs() As Integer = {4 * 25}
TextBox1.Text = "Bernard" + vbTab + "32"
SendMessage(TextBox1.Handle, EM_SETTABSTOPS, 1, tabs)
TextBox2.Text = "Luc" + vbTab + "47"
SendMessage(TextBox2.Handle, EM_SETTABSTOPS, 1, tabs)
TextBox3.Text = "François-Victor" + vbTab + "12"
SendMessage(TextBox3.Handle, EM_SETTABSTOPS, 1, tabs)
End Sub
End Class
属性并不重要(我已经测试过)。
此问题已在StackOverflow
上得到处理警告:制表符位置的度量单位不是字符,而是看起来是字符的1/4。这就是为什么我将长度乘以4。
C#解决方案
Multiline
答案 7 :(得分:0)
使用文字字符串(以@“开头)时,这可能会更容易
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
会导致char tab = '\u0009';
string A = "Apple";
string B = "Bob";
string myStr = String.Format(@"{0}:{1}{2}", A, tab, B);
答案 8 :(得分:0)
除了上面的辅助功能,您还可以使用PadLeft或PadRight:
string name = "John";
string surname = "Smith";
Console.WriteLine("Name:".PadRight(15)+"Surname:".PadRight(15));
Console.WriteLine( name.PadRight(15) + surname.PadRight(15));
这将在字符串的左侧或右侧填充空格。