【问题标题】:Accessing variables across files跨文件访问变量
【发布时间】:2020-12-23 13:52:00
【问题描述】:

我是编程新手,想自学如何编写 C#。我一直很顺利,并且一直在从互联网上的网站学习,但现在我遇到了一个我似乎无法找到解决方案的小问题。

我正在使用 Visual Studio 和 Blend 制作一个简单的实用程序,它包含一些通过 Blend 创建的自定义用户控件。

其中一个用户控件是一个拨动开关,为了识别它是打开还是关闭,我创建了一个布尔变量

private bool switchOn = false;

基本上我的目标是根据这个布尔值更新屏幕上的一些文本。

开关的变量存储在一个名为 - 'ToggleSwitch.xaml.cs' [FORM A] 的文件中,我要更新的文本存储在一个名为“MainWindow.xaml.cs”的文件[FORM B]

我将如何使用 [FORM A] 中的布尔变量并将其实现到 [FORM B] 中使用的代码中。

我希望我已经清楚地解释了我想要做什么,如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 简短的回答是可能private bool switchOn = false;更改为public static bool switchOn = false;
  • 可能你需要使用 session 来存储用户设置并在不同的页面上读取它。 Session 可能不适合大型应用程序,因此您需要更准确地了解您的项目架构和类型。否则,如果有数据库,则将此值存储在数据库中并访问您需要的地方。
  • 努力学习做得很好,提问也做得很好!如果切换开关与您要打印的文本在同一页面上,那么您可以通过执行if (mySwitch.switchOn) { // print } 之类的操作来访问它。在这里,我假设您有一个名为mySwitch 的变量,它代表您的开关。此外,您还需要将变量 (private) 的访问器更改为 public
  • @mjwills 这样做会使得该变量可以从项目中的其他文件访问,还是我必须以某种方式链接这些文件?
  • 如果它在Bob.xaml.cs 中,我怀疑你可以使用Bob.switchOn 来访问它。

标签: c#


【解决方案1】:

两种方法:

  1. 全局变量(共享状态)。只需在 FormA 中将变量 public static 设为。然后在 FormB 中使用 FormA.switchOn 来访问它。这是一个类似的question 回答。
  2. Data Passing through events。这有一个按钮单击事件,它读取一个值,然后使用 URL(查询字符串)调用另一个页面(formA)。然后,该页面 (formB) 会访问有问题的变量,而不是全局访问。

请注意,通常 (1) 在投入生产时是个坏主意。避免共享状态。

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 2013-09-06
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2014-05-09
    • 1970-01-01
    相关资源
    最近更新 更多