хорошо, это ответ на вопрос, который я задал вчера, но я чувствовал, что заслужил свой пост. я сделал этот контроль:
public partial class LinkLabelTextBoxPlayerName : UserControl
{
public LinkLabelTextBoxPlayerName()
{
InitializeComponent();
this.textBox.Hide();
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
this.linkLabel.Hide();
this.textBox.Show();
this.textBox.Focus();
this.textBox.KeyPress += new KeyPressEventHandler(textBoxPlayerName_KeyPress);
this.textBox.LostFocus += new EventHandler(textBoxPlayerName_LostFocus);
}
private void textBoxPlayerName_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter && !(String.IsNullOrEmpty(this.textBox.Text)))
{
this.linkLabel.Text = this.textBox.Text;
this.textBox.Hide();
this.linkLabel.Show();
}
}
private void textBoxPlayerName_LostFocus(object sender, EventArgs e)
{
if (!(String.IsNullOrEmpty(this.textBox.Text)))
{
this.linkLabel.Text = this.textBox.Text;
this.textBox.Hide();
this.linkLabel.Show();
}
else
{
this.textBox.Focus();
}
}
}
это LinkLabel ==> элемент управления Textbox, и он работает около 95%, вот проблема, когда пользовательский ввод щелкает ссылку и превращает ее в текстовое поле, я хочу, чтобы он "блокировал" ввод пользователя только текстовое поле, в противном случае вы можете продолжать нажимать на ярлыки ссылок, активируя другие текстовые поля. Мне просто интересно, если есть способ отключить пользовательский ввод, когда текстовое поле активно. Спасибо за любую помощь.
я изменил часть метода с
{
this.textbox.Focus();
}
до
{
this.textBox.Hide();
this.linkLabel.Text = "<click to add player>"; //my orginal link label text;
this.linkLabel.Show();
}
так что, похоже, это работает.