【发布时间】:2020-10-30 04:13:05
【问题描述】:
我写了一个小控件,允许从标签更改为文本框,反之亦然,一切都很好,问题是从标签到文本框时它会中断,这很奇怪,因为当我测试它时一切完美运行。
https://i.imgur.com/yo2tz9O.gif
using System;
using System.Windows.Forms;
namespace LabelBox
{
public partial class labelbox : Label
{
public TextBox textBox = new TextBox();
public labelbox()
{
InitializeComponent();
textBox.LostFocus += TextBox_LostFocus;
textBox.KeyDown += TextBox_KeyDown;
this.Controls.Add(textBox);
textBox.Hide();
textBox.Visible = false;
this.AutoSize = false;
}
// Sobrescribir el metodo Double Click de la clase Label
protected override void OnDoubleClick(EventArgs e)
{
textBox.Show();
textBox.Visible = true;
textBox.Text = this.Text;
textBox.Focus();
}
// Agreagar el metodo Lost Focus del textbox
protected void TextBox_LostFocus(object sender, EventArgs e)
{
this.Text = textBox.Text;
textBox.Hide();
textBox.Visible = false;
}
// Agregar el metodo Key Down para ENTER del textbox
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
this.Text = textBox.Text;
textBox.Hide();
textBox.Visible = false;
}
}
}
}
我什至尝试将文本框的大小修改为与标签相同。
【问题讨论】:
-
我无法让这段代码真正看到问题所在。但通常,TextBox 需要比标签更多的空间才能正确显示。那么您是否尝试过将标签的尺寸设置得更大?看看这是否正常(高度和宽度,记得禁用自动调整大小)。
-
拥有一个文本框并将其重新设置为“像一个标签”不是更简单吗?设置只读并删除边框?我相信这是微软在文件属性对话框中所做的,例如路径看起来像一个标签,但可以复制
-
但是文本框现在看起来是不透明的。
标签: c# textbox user-controls windows-forms-designer