首先LinkLabel没有输入功能,我们换一种思路,LinkLabel捕获F2后,将LinkLabel的visiable设置为false,new一个textbox,它的位置信息可以从LinkLabel获得,设置textbox获得焦点并全部选中,给textbox添加事件PreviewKeyDown。代码如下
if (e.KeyCode == Keys.F2)
{
//MessageBox.Show("nihao ");
label.Visible = false;
TextBox t = new TextBox();
//contextMenuStrip2.SourceControl.Controls.Add(t);
label.Parent.Controls.Add(t);
t.Text = label.Text;
t.Top = label.Top;
t.Left = label.Left;
t.ImeMode = System.Windows.Forms.ImeMode.On;
t.Focus();
t.SelectAll();
t.PreviewKeyDown += new PreviewKeyDownEventHandler(TextBox_PreviewKeyDown);
}
PreviewKeyDown事件获得enter后说明输入完成,需要做的是 将textbox的text值赋值给linklabel的text,并将lingklabel显示。最后将textbox删除掉(如果不删除会有什么后果,读者可以考虑)。代码如下
void TextBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
TextBox t = (TextBox)sender;
foreach (Control ct in t.Parent.Controls)
{
if (ct.Visible==false)
{
ct.Text = t.Text;
ct.Visible = true;
t.Parent.Controls.Remove(t);
}
}
//MessageBox.Show("fff");
}
}
当然你得保证linklabel的父控件的子控件只有一个且类型为linklabel类型的孩子。
完毕,如有错误,欢迎指正。谢谢