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

      首先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类型的孩子。

完毕,如有错误,欢迎指正。谢谢
            

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值