[英]Is there a way to select all with one click in a textbox in c# winform?
我正在做一个数字猜谜游戏,为方便起见,我想在程序中添加一行代码,只需单击一下即可选择文本框中的所有文本。 我已经尝试过在这里找到的所有内容以及在Google上找到的其他故障排除网站,但似乎都没有用,甚至试图将精力集中在文本框上。 该文本框仍然像普通文本框一样运行,即必须双击以全选。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace randomNumberGuessingGameFourthTry
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void startGame_Click(object sender, EventArgs e)
{
if (min.Text == "" || min.Text == " " || min.Text == "Min")
{
MessageBox.Show("You didn't enter a minimum value of zero or greater so the default value of 0 was set.");
min.Text = "0";
}
if (max.Text == "" || max.Text == " " || max.Text == "Max")
{
MessageBox.Show("You didn't enter a maximum value so the default value of 10 was set.");
max.Text = "11";
}
startGuessing startGame = new startGuessing(min.Text, max.Text);
this.Hide();
startGame.ShowDialog();
}
private void exitGame_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void min_TextChanged(object sender, EventArgs e)
{
min.Focus();
min.SelectAll();
min.SelectionLength = min.Text.Length;
int userInput1 = Convert.ToInt32(min.Text);
if (!(userInput1 >= 0))
{
MessageBox.Show("Your min range must be at least 0 or higher", "Invalid range found");
}
}
private void max_TextChanged(object sender, EventArgs e)
{
int userInput1 = Convert.ToInt32(min.Text);
int userInput2 = Convert.ToInt32(max.Text);
if (!(userInput2 <= userInput1 + 9))
{
MessageBox.Show("Your max range must be at least 10 digits higher than " + userInput1, "Invalid range found");
}
}
}
}
上面是我的form1.cs的代码,我认为如果可以在这里运行,可以在此程序的第二个窗体上运行。
您应该先调用SelectAll()
方法,然后调用Focus()
,而不是相反。 这个最小的例子对我有用:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.Click += TextBoxOnClick;
}
private void TextBoxOnClick(object sender, EventArgs eventArgs)
{
var textBox = (TextBox) sender;
textBox.SelectAll();
textBox.Focus();
}
}
你尝试了什么?
以下对我有用:
private void textBox1_Click(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.SelectAll();
}
自然,您需要将textBox1_Click()
添加为TextBox
的Click
事件的事件处理程序。
请注意,以上内容将导致始终在控件中单击鼠标即可完全选择文本。 这样将无法使用鼠标选择部分文本。 如果您想要更复杂的行为,则可以使用此处找到的答案:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.