方法不返回值

时间:2015-08-07 07:11:48

标签: c# .net winforms

我有一个方法应该在label.text中返回当前用户的域名。我在表单的load事件中调用该方法但没有出现,代码中也没有错误。也许我启动对象错了?如果我直接将方法代码放在load事件中,它就可以工作。

public partial class Main Form
{
  public Main()
  {
    InitializeComponent();
  }

  public string getCurrentDomain()
  {
    return domainNameValue.Text = Environment.UserDomainName;
  }

  public void Main_Load(object sender, EventArgs e)
  {
    Main main = new Main();
    main.getCurrentDomain();
  }
}

3 个答案:

答案 0 :(得分:6)

我认为您的问题出在Main_Load函数中,而您正在创建新表单而不是更改当前表单,正确的代码是:

public void Main_Load(object sender, EventArgs e)                                                          
{
   this.getCurrentDomain();                                    
}

或者,如果您想要使用main.show()

显示其他表单

答案 1 :(得分:0)

问题是因为您在<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css" rel="stylesheet"/> <div id="test"> <a href="#" style="font-size: 1.2em" class="blink"> <span class="glyphicon glyphicon-record"></span> </a> </div>方法中创建了Main类的新实例。因此,方法Main_Load更改您正在创建的实例的标签文本而不是执行getCurrentDomain()的表单中的标签。

方法Main_Load的主体也违反了Principle of least astonishment,因为该方法产生的副作用会改变标签的文本。但方法名称仅建议返回当前域名。

答案 2 :(得分:-1)

您可以使用

public string getCurrentDomain()                                                                      // Method: Get current domain
    {
        domainNameValue.Text = Environment.UserDomainName;    
        return Environment.UserDomainName;  
    }