【问题标题】:c# addressing a textbox for WRITE on a form from a functional element时间:2019-01-01 标签:c#addressingtextboxforWRITEonform从功能元素
【发布时间】:2012-12-14 00:40:50
【问题描述】:

我正在尝试了解 OO 和 C#,虽然我已经搜索过,但找不到答案,希望这里有人可以提供帮助。

我有一个表单 (public Form_DaRT_BOM_Main()) 和一个文本框 (textBox1)。这些驻留在 MSVS2010 生成的文件中。

namespace DaRT_BOM
{
  public partial class Form_DaRT_BOM_Main : Form
  {
    public Form_DaRT_BOM_Main()
  }
}

我在 Program.cs 中有自己的函数,位于

public static class GeneralFunctions
{
}

我正在尝试将文本写入文本框,但看不到应该如何解决。

目前我有:

public static String SplitFile(String FileToSplit)
  {
    String line;
    using (StreamReader reader = new StreamReader(FileToSplit))
    {
      line = reader.ReadLine();
      Form_DaRT_BOM_Main.textBox1 = line;
    }

    return null;
  }

在尝试使用文本框进行输出之前,我正在使用 MessageBox 进行测试,并且效果很好。

我现在得到的是编译错误:

非静态字段、方法或属性需要对象引用

这表明我没有正确处理文本框。

请原谅米老鼠的元素,但我仍在努力理解……新老戏法综合症。

感谢期待。

史蒂夫。

【问题讨论】:

  • 您似乎根本没有在处理文本框(名为 textbox1)。你去Form.Text
  • 是的,很抱歉。有点弧线球。如果我在那里插入 textBox1 我得到:非静态字段、方法或属性“DaRT_BOM.Form_DaRT_BOM_Main.textBox1”需要对象引用

标签: visual-studio-2010 c#-4.0


【解决方案1】:

在某些情况下或在构造函数中,您需要对表单的引用或访问表单内的 textbox1。例如:

//在表单内部(在事件或构造函数中)。 this.textbox1.Text = GeneralFunctions.SplitFile(some_parameter_here);

如果您想从静态类访问表单 - 将其设为单例或创建一些静态属性来保存对实际表单的引用。

【讨论】:

  • 帕维尔,谢谢。我可能需要从几个地方(函数调用)访问这个框。那怎么引用呢?史蒂夫。
  • 如果函数在表单中,那么只需访问属性(例如textbox1。如果它们不在表单中,您可能需要保存对实例化它的表单的引用,例如@ 987654322@
  • 谢谢。我需要重新阅读一些我认为的东西。这就是我不能很好地处理 OO 的地方。我了解 OO 的概念(对象、类、实例等),但实现却让我感到困惑。谢谢你的帮助。 :) 史蒂夫。
  • 帕维尔,谢谢。重读让我意识到我没有解决问题(我确实有),而是我的代码结构是错误的。此表单上的文本框将只需要这些函数,因为它们是此表单数据的运算符。我已将我的函数移到表单中,现在它工作正常。我试图像在 C 中那样工作,从“对数据进行操作的代码”的角度制作可重用的代码,而实际上我应该将其视为“需要这些操作的数据”。 (我想我说的是对的)。 :) 史蒂夫。
猜你喜欢
  • 2018-01-03
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多