在Winform App中实现只读视图

时间:2010-03-15 14:06:35

标签: .net winforms controls readonly

我有一个内部winform应用程序,用于查看,编辑和插入成员数据。他们使用大约40个单独的表格页面来操纵数据的不同部分。

我的问题是这个;实现表单页面的只读视图的最佳方法是什么?

我的想法是 循环控制设置Enabled = False 要么 留下它们但不允许任何数据更改(没有保存按钮等),除非它被“解锁”。

我很好奇其他人如何处理WinForm应用程序?

3 个答案:

答案 0 :(得分:1)

我认为如果一个字段不是要编辑的,它应该看起来不像一个字段。使其看起来像一个字段,为用户提供了可视队列,它应该是可编辑的。他们可能想知道为什么不是。因此,为什么不制作只读字段标签而不是Enabled=False

更新:如果您必须保留文字字段,则另一种方法是将它们设置为看起来像标签。这意味着将背景颜色设置为灰色,删除边框并移除tabstop。您可以创建DisableField函数来执行此操作。

答案 1 :(得分:1)

如果您的数据绑定不支持readonly,那么是,编写一些代码以使UI尽可能只读。但这不是'安全',所以一定要阻止任何可能触发更新的命令。

您希望它只读一致,不允许用户编辑他们无法保存的字段。但是不要在任何地方设置Enabled = false,其行为不同(没有选择/复制等)。

考虑一下组合框,你想让它们能够下拉吗?

答案 2 :(得分:0)

最好这样说,如果表单上的字段是只读的,那么用不可编辑的标签替换它们。这将更适用于文本框,复选框,对于组合框和列表框,也许,您还必须给它们一个标签,通过在两种情况下将选择显示为标签 - 您如何看待?

事实上,如果您希望避免将选择作为标签,这里有一些链接可以让您保留组合框/列表框...

  • 有关实现只读组合框的文章在CodeProject
  • 唯一的问题是组合框看起来不会精确抛光如果只读,CodeProject上的这篇文章展示了如何让它更精致。
  • 使用CodeProject
  • 上的IExtendedProvider的只读组合框(VB.NET)
  • 列表框与CodeProject
  • 上用作只读列表框的复选框相结合
  • 如何在Social.MSDN.Microsoft.com
  • 上禁用此复选框但不禁用滚动条
  • CodeProject
  • 上有关禁用项目的列表框上的文章