TextBox display returns from RichTextBox? - c#

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.

Related

Prevent string from breaking to new line in MessageBox

Is there a way to prevent the MessageBox from breaking a string instead of just growing to the width of the string? I'm porting an old VB application and they use message boxes to present a sizable amount of data to the user. I suppose I could create a form, but I've already started down this road, and would not like to have to go back.
Thanks.
The only (supported) way to have such control over how things get laid out here is to ditch the MessageBox helper class and build a custom Form class that does what you need.
We have dealt with this issue in the past be embedding newlines (\r\n) in the text of our message. MessageBox will grow vertically to honor the wrapping text. We used to have MessageBoxs so wide you couldn't even see the centered buttons, but now they show up fine.
Depending on the complexity of generating the message text and/or whether you have control over that, this may be your simplest solution. Otherwise, I think you will need to create your own form.
For example:
MessageBox.Show("Line1\r\nLine2\r\nLine3\r\nLine4", "MessageBox test");
MessageBox.Show("Line1 Line2 Line3 Line4", "MessageBox test");
The first line creates a MessageBox with 4 lines of text and the window has grown to the correct height to show all. The second line creates a MessageBox with a single line and the appropriate width to show the whole line.

Wrapping text in C# dialog box

I've got a dialog box that pops up with a dynamic list of numbers, and I'd like to get the box to wrap the text because at the moment it displayed up to screen width and then cuts the rest off.
I know I can use \n to declare a new line, but the list is dynamic - it could be one item, it could be 20.
Is there any way to tell the dialog box to wrap text?
Edit: clarification + example code
I'm not using MessageBox.Show() - our code uses its own defined message box class, but the guts of it calls System.Windows.Forms.Form.ShowDialog(parent). Maybe this isn't as well-behaved (i.e., doesn't wrap) as MessageBox.Show()?
Create your own simple form and add a label. Do the wrapping there... You cannot do that much things with Dialog boxes.
In this way you have much more flexibility to show your information to the user.
Are you using the System.Windows.Forms.TextBox? It has a property WordWrap that you can set to true
No other way for a standart MessageBox. Only creating your own form.
You could programmatically format the text by restricting each line to a specific number of words then inserting a \n or Envoronment.NewLine

C# winforms: move text from one textbox to another

I have a winform application with two textboxes. The textboxes are multilined and has 5 rows.
When the user enters more than 5 lines of text in the first textbox I want the text to continue in the second textbox. And if he/she deletes text from the first textbox I want the text to move back from the second to the first one...
I have tried to solve this in my code by checking how many rows the first textbox has and moved text between the two textboxes. But it doesnt work that well so I wonder if anyone got a better solution??
You could accomplish this by registering for the TextChanged events on the TextBox controls. Then in the event handler, manually inspect the Text property and set focus to the appropriate control. However, what you are describing sounds like it may lead to an inconsistent user experience.
From a UX standpoint I would suggest changing the approach. First of all do you really need to split the text in the UI, or could it be split afterward in the business layer? If you do need it split in the UI, you could have a single TextBox which allows the user to enter the full text, and below it have 2 read-only textbox's which display the 2 split segments as they type (you would also use the TextChanged event logic to do this as they type).
I hope this helps.
Have you tried checking the visible Characters in the text box? or text box character length?

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.

C# Correct way to design/implement this UI?

This is my first tryst with C#. The form that i have in mind consists
A textfield which will be supplied with the path of an executable.
A "Run" button which will call the executable(cosole app)
The executable console output should be displayed in the rich textbox.
Now when i click on a line in richtext box, i select and get the text in the line. This text maps to some other text info. I need to display this text info as a tooltip over the line.
More explanation:
The output of the exe is displayed in the text box as
Address1=Value
Address2=Value
Now when i click the line "Address1=Value", i map this text to find some info regarding what bits are set like
enable : 1
select : 0 ..etc
this info i need to display as tooltip over the line. Is such a thing possible? Is there better alternative to RTB/tooltip for this problem?
Thanks
Vivek
I would recommend using a ListBox for each string of data returned and then if you use a tooltip it makes alot more sense because you are hovering over a list item specifically not the whole text field.
Using the ListBox and items should make it alot easier to work with overall since it will be separating them into defined items instead of just appending lines to a text box.
Also I think you might have alot of work in store for you for trying to make the text box behave the way you want it to for it to treat each line differently dependent on the text of the line.
If you're using the textbox because later you want to be able to select all the output to copy and paste it I would have the textbox hidden by default and have a button that says like "Toggle Raw Output" that will show/hide the text field so users can get the text easily. While using the ListBox as the primary display for information.
What I understand from your question is that when you click on the line in the RTB, your code scans the text on that line, identifies the extra data associated with that line and then inserts it into the tooltip for the RTB.
Technically I believe that this is possible to do - although I am not 100% sure of the mechanics of inserting tooltip text. However as a user interface feature I would personally not do that as the tooltip text is displayed whenever the mouse pointer is anywhere over the RTB. Thus if a user clicks on line #1, (and sees the data associated from line #1) but hovers the mouse of line #3, they might think that the tooltip is associated with line #3.
You could alleviate my concerns with a strongly worded tooltip, but I feel that what you are doing is misusing the tooltip for something other than what it was intended to be used for. IMHO it may be that you are better off displaying your data with a tree control rather than with a RTB, as the tree control more naturally expresses the functionality that you desire (click on a node, expand it to see details etc).

Categories

Resources