繁体   English   中英

允许用户编辑标签和更改文本-C#WinForm

[英]Allow user to edit label and change text - c# winform

我有一个带有从Windows窗体标签继承的自定义标签的winform。 我需要允许用户编辑此标签并更改值。

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

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

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

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

到目前为止,这并不是最佳选择,但是仍然是一种选择。 将您的窗体KeyPreview设置为true,将KeyDown键事件处理程序添加到窗体,并将Click事件处理程序添加到标签。 在click事件处理程序中,将布尔值设置为true。 在keydown处理程序内部,有一个if语句,如果bool为true,则将按下的键添加到label的Text属性中,这样,如果用户单击标签,则他们键入的任何内容都会进入标签。

我的恐怖描述的示例代码:

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
        }
    }
}

这不是最有效的方法,您需要设置一种方法来使布尔值成为假,这样它就不会每次输入时都不断更改Labels值,但是它可以工作。

我敢肯定,还有一种更简单的方法来处理每个不同的密钥,而不用写出一个巨集(如果不是的话),因为对“,”可以是“ Oemcomma”感到厌倦了转换KeyCode。 祝您编码顺利:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM