【问题标题】:c# accessing string from method1 in method2, after method1's executionc#在method1执行后,在method2中从method1访问字符串
【发布时间】:2016-03-27 10:40:02
【问题描述】:

我正在处理一个带有一个文本框、一个按钮、一个组合框和几个其他文本框的表单。

所以,我希望这个 winforms 程序按如下方式工作:
1)你在textbox1中填写一个数据库索引值(例如:22222)
2)你点击按钮。此按钮转到数据库,在 textbox1 中查找值,并最终根据数据库返回的内容创建一个字符串。 (示例:返回值 = super;字符串值 = 5)
3) 单击按钮后,您应该能够填写其他文本框取决于组合框的 SelectedIndex。组合框中填写的值完全取决于 button1 生成的字符串的值。 (例如:combobox1 selectedindex = 1:textbox2.text = S;combobox selectedIndex = 2:textbox3.text = U)

因此,基本上,必须先执行 button1,然后 combobox1 才能开始执行自身。另请注意,这里(至少)使用了两种方法:button1_click 的 void 和 combobox1_selectedindexchanged 的​​ void。

前两个部分已经完成。我遇到的问题是访问由 button1 生成的字符串,该字符串只有在执行后才能访问,并在 combobox1 的方法中使用它。

这可能吗?

【问题讨论】:

    标签: c# winforms methods combobox


    【解决方案1】:

    在您的 Form 类上创建一个属性,一旦单击按钮 1 并使用文本框中的值填充该属性。

    然后只需随时随地使用它。

    示例代码:

    public partial class Form1 : Form
        {
            public string Value;
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                this.Value = textBox1.Text;
                textBox2.Text = this.Value;
            }
        }
    

    【讨论】:

    • 你能举个理论上的例子吗?
    • 我用一个简单的例子更新了我的答案,将文本框中的值设置为可以重复用于其他事情的东西。
    • 谢谢,但这个例子只有一个问题。这里应该使用两种方法:一种是私有的 void button1_Click,另一种是私有的 void combobox1_selectedIndexChanged。 combobox1 使用的字符串,只有在 button1_click 成功运行后才能访问。
    • 一旦你有了值,你就需要更新下拉列表的项目。因此,您将编写另一个方法,例如 UpdateDropDownContent 并根据需要更改下拉列表。最后, SelectedIndexChanged 将触发更新的值,因此您可以执行您需要的操作。这有意义吗?
    • 我知道你的意图是好的,但不,我不太明白。你想让我创建第三种方法吗?
    【解决方案2】:

    感谢您的帮助! 我最终能够这样做,真正访问方法2范围内的变量,而它是在方法1中创建的:

    public partial class Form1 : Form
        {   
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string output = "test";
                File.WriteAllText(@"C:\output.txt", output)
            }
    private void combobox1_SelectedItemChanged
            {
                string output = File.ReadAllText(@"C:\output.txt")
                // do something with this string
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多