AutoEllipsis at the beginning of a label - c#

I have a label on my form which is used to display a path. Occasionally the path is too long to display, so I turned on AutoEllipsis, but it always seems to truncate the end of the string (which is the more relevant part in my particular case). Is there any way to get it to automatically truncate the beginning?
Is there another control that I can use to display the path?

There is a project on The Code Project that looks like it does exactly what you want: Auto Ellipsis. There is a demo that you can download along with the source.

The easy way is do a trick by using textbox instead of label, just design it like a label then do this
textBox1.Enabled = false; //so it will not be selectable like label
textBox1.SelectionStart = textBox1.Text.Length; //so it will focus on the last character on the textbox

Related

Label displays punctuation incorrectly with RightToLeft

I'm trying to learn C# and .NET by creating a calculator app. However, I'm seeing some weird behavior with WinForms label and punctuation. My app has a series of number buttons, a "period" button for decimals, and various operators. When you press a button, I add the value to the label that is displaying the value:
displayLbl.Text += selectedButton.Text;
or
displayLbl.Text += ".";
The label has RightToLeft set to "true" to mimic the display of a typical calculator.
However, when a period first appears in the label, it appears ahead of the rest of the numbers that were added before it. For example, it will look like ".456" even though the "456" was added earlier. As soon as you add another number, the period will then appear back in its right place like "456.7".
This also happens with the negative sign (-). If you add "-478" to the label, it will appear as "478-".
This seems really buggy. Is there any way to fix this?
I set RightToLeft to "No" and then did the following and it worked beautifully:
this.displayLbl.TextAlign = System.Drawing.ContentAlignment.MiddleRight;

Adding "new line"s to text in text supporting objects (i.e Buttons, Rich Text boxs) both in and out of code

The other day I made a small program in C# to list things (dynamically via code) in a richtextbox (I could have used a listbox, but I didn't) but everything was on the same line.
Now at time of writing I had placed some text in a button (via the properties panel, and again, this is in C#), and I wanted part of that text to be on the next line (the button being big enough to support two lines)
So it got me wondering: How can you put line breaks in the common text supporting items, both in code and outside of it (via properties window)? By common I mean:
Rich Text boxes
Labels
Buttons
"\n" is the escaped character for a line break. So code like:
label.Text = "This is a \nbutton";
Should put the word button on a new line.
Edit:
If you want to do it using the properties window in designer, click on the arrow on the far right of the text property field and it will open a small box. If you type multiple lines on that as you would normally (ie actually pressing enter, not using \n) then the component will treat them as new lines and put the new lines in for you.
Pharap is correct, but if you want to be a little more precise with code use Environment.NewLine. This will match to the newline character based on what platform the code is running on. But if you are lazy "\n" will work 99% percent of the time.
For input into the properties window, there is a small arrow next to the property. Click that and you will get a multi-line text box to enter stuff.
The newline(\n) or with verbatim like this:
label1.Text = #"some very
very
very
long text";
With buttons for example you set the AutoSize property to true:
button1.AutoSize = true;
button1.Text = #"some very
very
very
long text";

TextBox display returns from RichTextBox?

I am creating an invoice program for a small local company but have run into sort of a problem. I have it setup so the invoice is printable by taking a screen shot of the application then remove all image detail so it is just the text from the Windows Form.
Problem is RichTextBoxes do not support drawing the text from them using DrawToBitmap. To fix this issue I am attempting to use a normal textbox. When inputting the address into a new textbox it does not show the returns in the text so it is all bunched up. Is there a way to fix this?
First all, I'll assume your TextBox's Multiline property is set to true.
This will work:
textBox1.Text = string.Join(Environment.NewLine, richTextBox1.Lines);
This code formats the text in your RichTextBox (in its Lines property) so your TextBox will display it properly.

How to get HTML <textarea> value using c#?

How can I get the value of a textarea using c# ?
my issue is when I using MultiLine TextBox I can't get the full value !! I mean what I wrote including the breake lines.
ex:
Google
Micrisoft
Yahoo
after saving above data it come's in one line
1.Google 2.Microsoft 3.Yahoo
the very first result on Google showed me this:
http://www.daniweb.com/forums/thread26856.html
1- I right clicked the TEXTAREA and made it RUN as a Server Control....Its working fine..
2- You can also set the "multiline" property of the standard TextBox control. That control will either render an element or a element, depending on the properties you set. // TextBox1.TextMode = TextBoxMode.MultiLine
Simply create a TextBox, set TextMode to MultiLine, then you can get the text using the .Text property on your TextBox object.
It's always worth trying to find the solution for yourself first, then try it out, make mistakes and ask questions. It's the best way to learn.
I made this in Visual Basic (easy translation to C#):
Dim convertedtext As String = TextBox1.Text.Replace(Environment.NewLine, "<br />")
and then, I saved convertedtext to the database. TextBox1 is the multiline textbox.
If you enconde the data to show it again (in a literal or similar) do the following:
HttpUtility.HtmlEncode(convertedtext).Replace(HttpUtility.HtmlEncode("<br />"), "<br />")
I'm not 100% sure that I understand the question - but maybe you want to look at the MeasureString method of the graphics class.

Displaying Data on the Windows Form

I'm searching files and returning lines that include the search text, and I'm not really sure the best way to display the information I get. Every time I get a match, I want to show, in some sort of control, the File it came from, and the whole text line. (aka streamreader.ReadLine() result). First I tried just putting it all in a read-only text box, but it doesn't have a scroll bar.
What is the best form control to help me display this data neatly?
The text box should do just fine. Just set MultiLine to true and ScrollBars to Auto (or Vertical, whichever suits you best).
Your best bet would probably be either a Listbox, or a DataGridView.
Also maybe have a look at Environment.NewLine Property
A ListView will work for this. Set its View property to Details, and add two columns in the designer (call them FileName and FirstLine or something, and play around with the widths as you like).
You add a new line like this:
string FileName = #"c:\file1.txt";
string FirstLine = "This is the first line of text from the file";
ListViewItem item = new ListViewItem(FileName);
item.SubItems.Add(FirstLine);
listView1.Items.Add(item);
You could use a list box to list the files in which the text was found, and then, a text box containing the text you want to show. You should be able to work if you do like Fredrik Mörk said.

Categories

Resources