【问题标题】:Calling a private void function from a button click method从按钮单击方法调用私有 void 函数
【发布时间】:2020-07-15 10:32:45
【问题描述】:

我正在尝试从按钮单击方法调用私有 void 函数。 selectedChoice 的值是从组合框中获取的。我调试并发现 selectedChoice 的值被正确获取,它甚至进入了按钮单击方法内的 If 条件。只是函数没有被调用。

每个方法都在 Form1 类中。

namespace Test
{
    public partial class Form1 : Form
    {     
      private void button1_Click(object sender, EventArgs e)
        {
            if(selectedChoice == "ABC")
            {
                Function1();
                Function2();
            }

组合框代码 -

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if(comboBox1.SelectedIndex!=0)
            {
                selectedChoice = comboBox1.SelectedItem.ToString();

            }
        }

我试图调用的函数被简单地定义为

 private void Function1()
  { 
      //do something

   }

【问题讨论】:

  • 如果调试显示它到达 if 块,那么继续进入它,使用F11。然后你会发现问题实际上是在 Function1() 上还是在其他地方

标签: c# function class buttonclick


【解决方案1】:

您正在尝试执行比较操作

selectedChoice == "ABC"

 ==

运算符不得用于字符串。该运算符将检查元素的 id 和比较器是否相等。请使用

selectedChoice.Equals("ABC")

相反。

尽管如此,方法还是使用以下代码调用:

private string selectedChoice = "ABC";

    private void button1_Click(object sender, EventArgs e)
    {
        if(selectedChoice.Equals("ABC"))
        {
            Function1();
            Function2();
        }
    }

    private void Function2()
    {

    }

    private void Function1()
    {

    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if(comboBox1.SelectedIndex!=0)
        {
            selectedChoice = comboBox1.SelectedItem.ToString();

        }
    }

【讨论】:

  • 请确保,带有“ABC”的 selectedItem 不是组合框中的第一个
  • 上面的代码在我的环境中工作。您是否有任何优化,配置的属性,可能导致您描述的行为?
猜你喜欢
  • 2014-10-29
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多