您的位置:首页 > 编程语言 > C#

c# 中LinkLabel捕获F2进行重命名

2015-07-13 19:36 471 查看
首先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类型的孩子。

完毕,如有错误,欢迎指正。谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: