![](/img/trans.png)
[英]Allow user to change Default text of a label, so new text is viewed the next time the program is run. (C#)
[英]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.