SelectAll not working in Dialog WPF - c#

I'm not sure what's going wrong but I can't select the Text of my TextBox in a dialog.
I added a FirstTimeLoadedHandler to Loaded in my view where I select the text:
public ParticipantView()
{
InitializeComponent();
Loaded += FirstTimeLoadedHandler;
}
private void FirstTimeLoadedHandler(object sender, RoutedEventArgs e)
{
SurnameBox.Focus();
Keyboard.Focus(SurnameBox);
SurnameBox.SelectAll();
}
However my textbox is in Keyboard-Focus, but not selected at all. I'm not sure why it's not working.
I thought it has something to do with my databinding but the data should be received before Loaded fires or am I wrong?

Your code would work fine with two small changes. The first is that obviously, selecting all on a TextBox that has no text in it will have no effect. Secondly, if you focus it after calling SelectAll, you'll have more luck. Try this:
private void FirstTimeLoadedHandler(object sender, RoutedEventArgs e)
{
SurnameBox.Text = "This text is selected";
SurnameBox.SelectAll();
Keyboard.Focus(SurnameBox);
}

Related

TextBox.Text without the suffix of the appended part of Autocomplete

Is there a way to get the Text in a TextBox that has an Autocomplete that appends text, but without the part that is appended? I want to use this text in the Textbox_TextChanged-event. This code doesn't work
private void Textbox_TextChanged(object sender, EventArgs e)
{
var t = textbox.Text.Substring(0, textbox.SelectionStart);
}
It seems the TextChanged-event fires when the autocomplete-text is appended, but the selection of the appended text is applied after that.
E.g. if the user types in ho and the autocomplete has an entry house, the textbox contains the text house, but the use is selected and can be overwritten when the user continues typing. I want to get the ho-part, because that is the text the user has typed in, without the use-part, which doesn't come from the user.
Question is some what confusing, I have provide an answer as I understood it.
Text change event fires when you change text in the textbox. You can use suggest instead of appending it
Assume that textbox name is "Textbox1"
private void Textbox1_TextChanged(object sender, EventArgs e)
{
this.Textbox1.AutoCompleteMode =
System.Windows.Forms.AutoCompleteMode.Suggest;
var t = Textbox1.Text;
}
I solved it with a delay, so the textbox has time to apply the selection. This seems to work so far, but could be an issue if the applying of the selection takes longer than the wait-time.
private async void Textbox_TextChanged(object sender, EventArgs e)
{
await Task.Delay(200);
var t = textbox.Text.Substring(0, textbox.SelectionStart);
}

How to paste text from clipboard into selected textbox using a button

I am relatively new to c# but I am currently creating a Windows Form that has an editor window. I'm struggling with the Paste button though as I have 2 textbox fields, one for the title of the note and one for the note itself. I'm wanting to be able to paste from the clipboard into either textbox.
I have tried using if statements based on noteText.Focused and titleText.Focused but obviously this doesn't work as the Paste button becomes focused as soon as you click it.
Any suggestions would be of great help.
Create a local variable and save last focused textBox in it.
//subscribe both textBoxes with same GotFocus event handler
textBox1.GotFocus += textBox_GotFocus;
textBox2.GotFocus += textBox_GotFocus;
//local variable
TextBox lastSelected;
//GotFocus
private void textBox_GotFocus(object sender, EventArgs e)
{
//save last Selected textBox
lastSelected = sender as TextBox;
}
private void button1_Click_1(object sender, EventArgs e)
{
//on click get value from clipboard
if(lastSelected != null)
lastSelected.Text = Clipboard.GetText();
}

C# Tabless Control Previous/Back/Return Button failing?

I am hoping someone here can help me, i have a Tabless Control on my windows forms application and basically because the tabs are purposely hidden i have added 2 buttons to each tab "Next" and "Back".
This is the code snippet i have for my "Next" button:
private void nextbutton1_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage3;
this.toolStripStatusLabel8.Text = System.DateTime.Now.ToString();
}
Which works fine, however when i use the exact same theory on the "Back" button it does not work:
private void backbutton1_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabmain;
this.toolStripStatusLabel1.Text = System.DateTime.Now.ToString();
}
So my question is how does one go to a previous tabpage from a button? I have looked through here and tried all of the links that came up but nothing has worked any ideas?
You should use the SelectedIndex property instead of using concrete TabPage instances. This way it will still work when you decide to change the order of the pab pages or add new pages:
private void previousButton_Click(object sender, EventArgs e)
{
if (tabControl1.SelectedIndex > 0)
{
tabControl1.SelectedIndex--;
}
}
private void nextButton_Click(object sender, EventArgs e)
{
if (tabControl1.SelectedIndex < tabControl1.TabCount - 1)
{
tabControl1.SelectedIndex++;
}
}
Since there is no "Tabless" tab control in .NET Framework I can only assume that it works similar to the standard TabControl. If the solution doesn't work you should give us some information about the actual class you use.
BTW: There is no need to repeat the buttons on each page. Why don't you just put the buttons outside the TabControl?
Also: I see that you use a ToolStripStatusLabel to show the current time. Instead of updating it each time the user clicks somewhere add a Timer to your form. Set its Interval to 1000 and handle its Tick event. Update the label there:
private void timer1_Tick(object sender, EventArgs e)
{
toolStripStatusLabel1.Text = DateTime.Now.ToLongTimeString();
}
This way it updates constantly and again there is no need to repeat anything. You need to call timer1.Start() in the form's constructor.

How to dynamically update Label text when textbox changes

I am having a problem with updating the text of my label. Not sure how do I go about doing this.
I have a label (lable1) and a text box (secondTextBox)and I have a tree view that the user needs to select items from. The process goes like this:
User selects an element in the tree view, label1 displays default text and secondTextBox appears. When the user changes the default text inside secondTextBox the text inside label1 should automatically update itself without the user pressing anything (bear in mind that I have about 45 nodes that needs this to be active, is there a quick way to do this or do I have to edit the code for the 45 nodes?).
So far I was able to do the first change, however whenever the user enters anything, the label doesn't update automatically, the user has to select something else from the tree view and goes back to the original selection for the text to update.
Here is my code so far:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.FullPath == #"Node0/Node1")
{
label1.Text = String.Format("Whatever default text there is {0}"
textBox1.Text);
}
}
}
}
Here is the screen shot for when it is in default mode.
http://i.stack.imgur.com/0NOlP.jpg
Here is the screen shot for when I have entered text, but there is no change in the label box:
http://i.stack.imgur.com/3uX53.jpg
Thank you very much in advance.
It looks like you just need to add a TextChanged event handler to your textbox1 control. Try putting this in your Form1 constructor:
textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
Next, add this method:
private void textBox1_TextChanged(object sender, EventArgs e)
{
label1.Text = String.Format("Whatever default text there is {0}", textBox1.Text)
}
If you want to update your label when the textbox change you should wire the TextChanged events of the textbox:
private void textBox1_TextChanged(object sender, EventArgs e)
{
label1.Text = String.Format("Whatever default text there is {0}", textBox1.Text);
}
Set the event using the Form Designer or dinamically when you load your form.

Dropped down in combo after focused

I have a combo box. It must display its content, when focused and its value changed as well.
I wrote this code in its Value Change event:
if(combo1.Focused)
combo1.DroppedDown=true;
But it doesn't work!
what's your solution?
What Event handler are you putting that code in? Assuming that you want to show the drop down when the user types in the edit box part of the combo just handle the TextChanged event and put that code inside there and it should work.
If I understand your requirement correctly, when the combobox gets focus you want the drop down list to show. That can be achieved as follows
private void Form1_Load(object sender, EventArgs e)
{
comboBox1.GotFocus += new EventHandler(comboBox1_GotFocus);
}
void comboBox1_GotFocus(object sender, EventArgs e)
{
comboBox1.DroppedDown = true;
}

Categories

Resources