开发者

Winforms Label Text property not displaying \t tab character

This should be ve开发者_Go百科ry simple.

I have a Label control on my Form and I am trying to put a tab character between text

Label.Text = "Is there a\ttab";

The output is "Is there atab";

What am I doing wrong?


Tab is actually a non-printing character—or rather, a control character. What it does is entirely dependent on the application. What exactly do you expect? 8 spaces? 4 spaces? As many spaces as needed to get to a multiple of 8 columns? Indentation of the following text by one cm?

To put it short: The Label control doesn't support tabs. Actually, Label just uses normal graphics routines for rendering its text and how should they know what you intend to do with your tab character?

If you need to display that character as a number of spaces, then you should replace it by that number of spaces.


I wanted to add tabs ("\t") to a dropdown list of items. The items have a ToString method that gives about 3 words concatenated together. They did not line up. For example:

  • 1-I 45
  • 123-AB 511
  • 123456-MMM 611

A long list like this is hard to read. So I used string.Format like this:

string.Format("{0,6}-{1,-4} {2}",id,name,num);

The number after the comma will right align/pad if positive and left align/pad if negative. Then I changed my font in the Combobox to be monospaced, like Courier New, and you get something like this:

     1-I    45
   123-AB   511
123456-MMM  611

That is much easier for a user to read.


Nothing, windows forms labels are very limited in functionality and don't support the \t character.

A (slightly awkward) alternative might be:

label1.Text = "test\ting\t123".Replace("\t","    ");


Old thread, but since none of the answers seemed to work for me, I will go ahead and throw in my 2 cents. I could not get a "\t" or even use manual spaces to add spacing to the label. What I ended up doing was using alt code alt-255 5 times. This worked like a charm. Gotta love total hacks...


Right, to insert a tab, just add the spaces desired.

If you want to offset the next by a specified length, you could try

int offset_text = 20;
label1.Text = "Is there a".PadRight(offset_text)+"Tab";
label2.Text = "More Text".PadRight(offset_text)+"Too";


Just use a literal string and you should be good to go...

label1.Text = @"Test for            Tab";

Where that big space is where I actually hit tab three times...hope this helps


I had the same problem. A textbox does instead a label accept Tabs. So if you change the label in a textbox, the pro


Just click in the arrow at the right of the Text property of the label (click in the Text property content and the drop-down-arrow will show up). A box for text-editing will open, and in that box you can use Enter, Tab, and so on.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜