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类型的孩子。
完毕,如有错误,欢迎指正。谢谢
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类型的孩子。
完毕,如有错误,欢迎指正。谢谢
相关文章推荐
- C#学习笔记(十一):动态类型
- C#学习笔记(十):反射
- csharp: Data binding in WPF DataGrid control
- csharp: Data binding in WPF DataGrid control
- csharp: Data binding in WPF DataGrid control
- C#几种截取字符串的方法
- C#基础系列——反射笔记
- C#在winform中调用系统控制台输出
- 【C#】判断文件是否正在被其他进程占用
- c# 同一个文件夹 获取最新修改过的文件
- C#中,实现文件的移动
- 通过XML格式,读取CSV文件
- C# 操作word
- c# TextBox 重绘边框
- C#中string.Format()和ToString()格式化方法
- c#实现动态悬浮窗代码(可用于检测)
- c# equals和==的区别
- 如何解决C#中多个panel重叠问题
- c#控制台应用程序-“进入指定日期检查出星期几”
- 也来说说C#异步委托(转)