WPF RichTextBox seamless TextBoxes as InlineUIContainers - c#

I'm attempting to "Tokenize" text inside of a WPF RichTextBox control. Whenever the user types a ";", the text before it is placed into a new TextBox contained within an InlineUiContainer. This allows the text to be programmatically different, and yet still be editable.
I was able to remove the border and make the background transparent so that the text looks to be directly inside of the RichTextBox, as desired; however, if you attempt to select only a portion of the text in a "token" and some text outside of it, the whole text box is selected regardless.
My question then is this: is there a way to make the textbox seamlessly selectable? and perhaps to make it so cursoring left/right with the arrows to move into the textbox rather than cursoring over it?

I just ended up using an extension of the Run class.

Related

Make Current Line in Read-Only Rich Text Box Editable

I'm attempting to make a command prompt clone in C# so I can get familiar with using IO. However, instead of just one text body, I created two text boxes (one for the command and another for the "parameters") and a rich text box to view the result of the commands. It may sound confusing and the title may be misleading, but I didn't know how else to word it. Anyway, my question is- how do you make only the current line editable and the rest read-only? And how would I be able to combine the commands and parameters in the two text boxes so I wouldn't need two separate text boxes? I have spent 6 days trying to figure out the logic to implement this but I got nothing.
Here's a picture of the form:
And here's what I want to make it similar to:
I'm not sure if you can do that, but if it was me, and this was a "get it done now" situation (and this is just off the top of my head), I would create a user control to contain the "screen". This user control would have the RTF or list box as the top, and a textbox flush under it.
I would remove the borders and wrap both these controls in a panel that has borders. This would simulate a single control.
The textbox would check for the enter key in one of the key-press events, and the control itself would have events that could be handled by the parent control.
This may be hacky, but it would probably be what I'd do in a last minute situation.
Oh as far as the command and parameter stuff, if you read the textbox as a single value, then split the string into an List or array, you could then define a switch or some other conditional code that would know what to do with parameters (index 1+), based on the value of the first item/index.

How To Highlight Text in a textBox While Typing in another textBox?

I'm making a typing windows program that has two text Boxes,
the first is the Source Text textBox and it is read only,
the other is where the user get to type in the text that is in the source TextBox.
When the user typing a letter in the TypingTextBox, I want that letter to be highlighted in the SourceTextBox..
I tried doing this in a couple of events, but none really worked:
SourceTextBox.Select(TypingTextBox.SelectionStart , 1);
I even Tried Making my own event, Also didn't work.
The thing is, I won't see the SourceTextBox highlighting unless I click on it.
and As I mentioned, I tried putting the above code in events like:
Mouse-Focus-Leave in the SourceTextBox
and: TextChanged in the TypingTextBox.
All didn't work .. :(
and If I manged to do that, Can I change the Highlight color ?
Assuming this is WinForm, you need to set the HideSelection property on the TextBox to "False". As far as changing the highlight colour, none that I'm aware of.

What WPF control should i use for my window?

So im making a WPF project where one of my windows has to let the user see a text. Select parts of this text for being put into an array of strings and no more than that. So he/she musnt be able to edit anything in the text only highlight parts and then click on a button. What WPF control would be smart to use for this?
I'd probably just use TextBox with IsReadOnly set. The various selection properties are all you need after that.

How to set the ForeColor of a string in a multiline TextBox? [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
I want different colours in my C# webform textbox!
I have a TextBox control with TextMode="MultiLine". It is like a chat application where user name appear in different color and message appear in black color. How to change TextBox's ForeColor for user name only ?
Repetitive question :
I want different colours in my C# webform textbox!
you have two options :
using custom editor with disabled toolbar! (as described in mentioned thread)
using a editable div (typing allowed) and format elements in it using css!
another solution can be like this:
create a div element with a border witch will simulate your textbox
create a span element at first of your div to hold your username!
create a textbox at front of each username for its message to type!
but remember this solution is for new message for typing. for old messages you should use div and span only elements (without textbox) to show them. posted messages do not require textbox, because they are not editable!
As far as I know this isn't possible (to change the colours of different parts of text in a textbox). You can only have 1 colour, your best way would be to wrap it up in HTML displayed as you want with the user name as a separate div and the text control floated to it's right.
You can't add different color to separate words in the textbox.
You can only set one color for the whole textbox.
MyTextBox.ForeColor = Color.Red;
Any other scenario, you will have to build it using HTML and CSS
Try to use RichTextBox to get your appropriate result.

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