所以我有一个数字上调控制器,我想隐藏上下(递增和递减)按钮。到目前为止,我已经在值更改事件中进行了设置以进行测试。基本上,一旦值变得大于3,按钮就会被隐藏。代码看起来像这样:
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
if (numericUpDown1.Value > 3)
{
//numericUpDown1.Controls[0].Visible = false;
numericUpDown1.Controls[0].Hide();
numericUpDown1.Refresh();
}
}
它有效......排序。您会看到按钮被禁用,因为我无法再点击它们,但它们仍然清晰可见。它看起来像这样:
文本框只是另一个测试的一部分,基本上你取了numericupdown控件的值并从10减去它,答案就在文本框中。
正如您所看到的,我已经尝试过去设置visible属性,甚至试图强制整个控件重绘自己,但此时似乎没有任何工作。任何建议将不胜感激。非常感谢你提前。
答案 0 :(得分:1)
为了澄清,您是否要隐藏上下控件,因为某种程度上您想阻止用户将NumericUpDown控件的值递增到特定值?因为如果是这样的话,你不能只使用NumericUpDown控件的Maximum
属性来完成这项工作吗?
此外,如果值(在您的情况下)不再大于3,还有办法取消隐藏按钮吗?
更新#1
这只是解决您遇到的问题的方法。我尝试隐藏上面的例子中的上升按钮但是也未能得到结果,隐藏控件仅在控件实际绘制之前有效。
所以我做的是,我在上面的例子中添加了一个文本框,它将接收numericupdown控件的值,并使numericupdown的宽度足够小,只显示updown按钮。见下图
蓝色控件是一个文本框,红色控件是数字版本,绿色控件是另一个文本框。
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();
}