允许用户编辑标签并更改文本-C#Winform



我有一个带有从Windows表单标签的自定义标签的Winform。我需要允许用户编辑此标签并更改值。

我知道我们可以使用文本框来允许用户通过将ReadOnly属性更改为False来编辑。

但是我之所以使用标签的原因是我可能需要更改文本的方向,因此需要自定义标签。

所以我的问题是,是否可以允许用户编辑普通的winform标签?

帖子:可编辑标签控件不是一个有效的解决方案。那也没有接受的答案。

这不是迄今为止的最佳选择,但是,它仍然是一个选择。将您的表单KeyPreview设置为True,将KeyDown密钥事件处理程序添加到您的表单中,并将Click事件处理程序添加到您的标签中。在点击事件处理程序中,请将其设置为真实。在键盘处理程序中,请使用一个IF语句,将按键按键 Text属性添加到标签属性,如果bool为TRUE,则该方式,如果用户单击标签,则它们键入的任何内容都将进入标签。

。 。

我可怕的描述的示例代码:

public static Form f1 = new Form();
public static Label l1 = new Label();
public static bool isLabelClicked = false;

然后将它们放在任何方法中,以设置您的表单和对象的属性。

f1.KeyPreview = true;
l1.Click += new EventHandler (l1_Clicked);
f1.KeyDown += new KeyEventHandler (f1_keydown);

然后在您的项目中使用这两种方法

public static void l1_Clicked(object sender, EventArgs e)
{
    isLabelClicked = true;
}
public static void f1_keydown(object sender, KeyEventArgs e)
{
    if (isLabelClicked == true)
    {
        if (e.KeyCode == Keys.A)
        {
            l1.Text += "a";
        }
        else if (e.KeyCode == Keys.B)
        {
            //Etc. For each key
        }
    }
}

这不是最有效的方法,您需要设置一种使Bool False的方法,以便每次键入时都不会继续更改标签值,但它会起作用。

我敢肯定,还有一种更简单的方法可以处理每个不同的钥匙而不写出巨型,如果block却厌倦了转换键代码,因为"可以是" oemcomma"。您的编码好运:)

最新更新