NumericUpDown控件的向上按钮不会隐藏

时间:2014-10-25 23:34:34

标签: c# visual-studio-2010 hide draw numericupdown

所以我有一个数字上调控制器,我想隐藏上下(递增和递减)按钮。到目前为止,我已经在值更改事件中进行了设置以进行测试。基本上,一旦值变得大于3,按钮就会被隐藏。代码看起来像这样:

    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
        if (numericUpDown1.Value > 3)
        {
            //numericUpDown1.Controls[0].Visible = false;
            numericUpDown1.Controls[0].Hide();
            numericUpDown1.Refresh();
        }
    }

它有效......排序。您会看到按钮被禁用,因为我无法再点击它们,但它们仍然清晰可见。它看起来像这样:

Ignore the Textbox

文本框只是另一个测试的一部分,基本上你取了numericupdown控件的值并从10减去它,答案就在文本框中。

正如您所看到的,我已经尝试过去设置visible属性,甚至试图强制整个控件重绘自己,但此时似乎没有任何工作。任何建议将不胜感激。非常感谢你提前。

1 个答案:

答案 0 :(得分:1)

为了澄清,您是否要隐藏上下控件,因为某种程度上您想阻止用户将NumericUpDown控件的值递增到特定值?因为如果是这样的话,你不能只使用NumericUpDown控件的Maximum属性来完成这项工作吗?

此外,如果值(在您的情况下)不再大于3,还有办法取消隐藏按钮吗?

更新#1

这只是解决您遇到的问题的方法。我尝试隐藏上面的例子中的上升按钮但是也未能得到结果,隐藏控件仅在控件实际绘制之前有效。

所以我做的是,我在上面的例子中添加了一个文本框,它将接收numericupdown控件的值,并使numericupdown的宽度足够小,只显示updown按钮。见下图

enter image description here

蓝色控件是一个文本框,红色控件是数字版本,绿色控件是另一个文本框。

private void greenTextBox_TextChanged(object sender, EventArgs e)
{
    if (Convert.ToInt32(textBox2.Text.Trim()) <= 0)
    {
        redNumericUpDown.Visible = false;
        redNumericUpDown.Refresh();
    }
    else
    {
        redNumericUpDown.Visible = true;
        redNumericUpDown.Refresh();
    }
}  

private void redNumericUpDown_ValueChanged(object sender, EventArgs e)
{
    blueTextBox.Text = redNumericUpDown.Value.ToString();
    greenTextBox.Text = (10 - redNumericUpDown.Value).ToString();
}