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 ==>文本框控件,它的工作率约为95%,这是问题,当用户输入cliks linklabel,并将其转换为文本框时,我希望它“锁定”用户输入只有文本框,否则,你可以继续点击链接标签,激活更多的文本框。我只是想知道在文本框处于活动状态时是否有办法禁用用户输入。谢谢你的帮助。
我从
改变了部分方法{
this.textbox.Focus();
}
到
{
this.textBox.Hide();
this.linkLabel.Text = "<click to add player>"; //my orginal link label text;
this.linkLabel.Show();
}
所以这似乎有效。
答案 0 :(得分:1)
您可以尝试添加一个静态的“Who have focus”变量,当您将焦点放在一个变量上时,您可以使用旧的静态变量并使其显示标签。
e.g。
private static LinkLabelTextBoxPlayerName _curSelected;
...
if(_curSelected != null)
{
_curSelected.Blur();
}
_curSelected = this;
这假设您希望一次只打开一个文本框,而这不是正常工作的文本框。
答案 1 :(得分:1)
我会将您希望锁定用户的字段的CausesValidation
属性设置为true。
然后,在Validating
事件处理程序中,我将使用;
private void control_Validating(object sender, CancelEventArgs e)
{
if( ! allowUserToLeaveControl )
e.Cancel = true;
}
希望这适合你!
/ A
答案 2 :(得分:0)
对不起,我问过这个问题,我应该多花一点时间,这里的代码工作正常,
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.Trim()))
{
this.textBox.Hide();
this.linkLabel.Text = "<click to add player>"; //orignal text;
this.linkLabel.Show();
}
else if (e.KeyChar == (char)Keys.Enter)
{
this.textBox.Hide();
this.linkLabel.Text = this.textBox.Text;
this.linkLabel.Show();
}
}
private void textBoxPlayerName_LostFocus(object sender, EventArgs e)
{
if (!(String.IsNullOrEmpty(this.textBox.Text.Trim())))
{
this.textBox.Hide();
this.linkLabel.Text = this.textBox.Text;
this.linkLabel.Show();
}
else
{
this.textBox.Hide();
this.linkLabel.Text = "<click to add player>"; //orginal text;
this.linkLabel.Show();
}
}
}