我希望文本框显示为禁用,并显示一个数字。
所以我给它一个黑暗的背景,我希望它没有光标。我希望它不可编辑。但我也希望它可以点击。
但是当它被点击时,我希望它具有白色背景颜色,并且可以编辑。
我知道如何改变颜色。
我的问题是,当我将文本框的可编辑属性设置为false时,单击它的方法不会被触发。
解决方法是在其顶部放置透明标签。然后可以点击(当点击它时我可以禁用并启用文本框)。但我不知道如何制作透明标签。我尝试了一个标签,其中可见设置为false,但也无法点击。
答案 0 :(得分:1)
创建一个包含文本框位置和大小的标签。将边框,背景等设置为禁用的文本框。确保文本框z-order位于顶部(Bring to Front),并将其visible属性设置为false。
答案 1 :(得分:0)
处理文本框的MouseDown事件及其父级的mousedown事件。如果文本框被禁用, MouseDown事件将由父处理。丁!
我假设父母是一个名为Form1的表单。如果直接父母是专家组或其他什么,表格将无论如何都会得到该事件。但你可以很容易地解决这个问题。
private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
(sender as TextBox).Enabled = !(sender as TextBox).Enabled;
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
var rect = RectangleToClient(textBox1.RectangleToScreen(textBox1.ClientRectangle));
if (rect.Contains(e.Location))
{
textBox1.Enabled = !textBox1.Enabled;
// I added this because it felt very wrong for the TextBox not
// to gain focus when I enable-clicked it. I think you'll agree.
if (textBox1.Enabled)
{
textBox1.Focus();
}
}
}
建议你尝试WPF的人是对的;它常常很痛苦,但最终它会非常好。我现在讨厌回到WiFo。但是如果你需要使用当前的代码库来完成这项功能,那么这个可能会很糟糕的kludge会让你在那里。