2012-01-30 65 views
0

我的应用程序中有一些DomainUpDown控件。该行为是这样设置:防止控件在未启用时更改其Text属性

  • 正常:每个控制器可单独进入向上/向下(更改所选项目)
  • 特殊:如果一个复选框被选中,上/唐宁第一控制都将导致其他控件也要更改

现在有些情况下,我想通过设置Disabled = true来禁用某些控件。我这样做了,但在这种情况下,更改第一个控件的选定项目将导致其他禁用控件也更改所选项目。

有没有办法完全禁用控件,因此它不接受像control.Text = "bla bla"这样的东西?

P.S:我不需要隐藏控制!

+1

在更新TextBox值的事件中,为什么不简单地检查TextBox上的Enabled属性,并且仅在文本设置为true时才更改文本? – Lloyd 2012-01-30 08:34:21

+0

我保留,作为我的最后一个选项。由于控件数量很多,需要大量编辑。我希望有一种方法可以完全禁用一个控件,我想知道为什么'Disabled'不会真的禁用控件! – 2012-01-30 08:37:05

+1

禁用只是防止用户与控件交互或引发事件。 MSDN:使用Enabled属性,可以在运行时启用或禁用控件。例如,您可以禁用不适用于应用程序当前状态的控件。您也可以禁用控件来限制其使用。例如,可以禁用按钮以防止用户点击它。如果某个控件被禁用,则无法选择该控件。 – Lloyd 2012-01-30 08:41:32

回答

1

方式一:

你可以抱着Textbox.Text值的列表,将举行条目所有文本框。

OnTextChanged

  • 如果你的文本是启用 - 更新它的text属性,并将其存储在列表中。

  • 如果您的文本框是已禁用 - 将文本property设置为您在列表中的最后一个值。

可以使用类似的一个Dictionary或任何含有KeyValuePair对象。

0

恐怕没有。至少不是没有额外的工作。

+0

那不是一个答案。我不会-1你,但你需要详细说明......什么是'额外的工作'? – Shai 2012-01-30 08:24:11

+1

@Shai你可以派生自己的TextBox(或者你正在使用的组件),并且在修改Text时检查Disabled属性,或者使用TextChanged事件直接处理它。 – 2012-01-30 08:30:36

相关问题