Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于给定文本声明字符串的值_C#_Visual Studio_Variables_Windows Forms Designer - Fatal编程技术网

C# 基于给定文本声明字符串的值

C# 基于给定文本声明字符串的值,c#,visual-studio,variables,windows-forms-designer,C#,Visual Studio,Variables,Windows Forms Designer,我对编程非常陌生,所以我想问一下如何基于对象文本声明字符串的值 所以基于我界面的标题文本。我将确定字符串值。以下是我尝试的代码: public Mainmenu() { InitializeComponent(); initializeOffice(); } public string office; public void initializeOffice() { if (officeName.Tex

我对编程非常陌生,所以我想问一下如何基于对象文本声明字符串的值

所以基于我界面的标题文本。我将确定字符串值。以下是我尝试的代码:

 public Mainmenu()
    {
        InitializeComponent();
        initializeOffice();

    }
    public string office;

    public void initializeOffice()
    {
        if (officeName.Text == "Accounting Office")
        {
            office = "Accounting";
        } else if (officeName.Text == "Registrar's Office")
        {
            office = "Registrar";
        }
我使用office字符串作为变量来确定文件夹路径,因为会计办公室和注册办公室都有不同的目录。例如:

using (StreamWriter objWriter = File.AppendText("C:Desktop\\" + office + "\\Finished\\" + ticketNumber.Text +".txt"))
有人能帮我吗?似乎字符串office总是显示“Accounting”值,即使office文本已经不同

其他:

if (chooseService.Text == "")
                     {
                     MessageBox.Show("Please specify the department.");
                     }
                   else
                     {
                       this.Hide();
                       Mainmenu login = new Mainmenu();

                       login.Show();
                       login.officeName.Text = chooseService.Text;
                     }

这是获取我的officeName内容的地方。chooseService对象是一个组合框,包含不同办公室的选项。

因此,这里的问题是,在设置字符串之前,主菜单窗体正在初始化标题,该字符串将用于确定“office”应设置为什么

试试这个:

if (string.IsNullOrEmpty(chooseService.Text))
  MessageBox.Show("Please specify the department.");
else
{
  this.Hide();
  MainMenu login = new MainMenu(chooseService.Text);
  login.Show();
}
然后修改主菜单表单,如下所示:

public Mainmenu(string department)
{
    InitializeComponent();
    initializeOffice(department);

}
public string office;

public void initializeOffice(string department)
{
    if (department == "Accounting Office")
    {
        office = "Accounting";
    } else if (department == "Registrar's Office")
    {
        office = "Registrar";
    }

这将保证主菜单类具有显示正确值(或用于设置路径)所需的信息。您还可以将标题的初始化从MainMenu类的构造函数中移出,并使用chooseService.Text中的字符串值调用initailiszeOffice,两者都可以,但我更喜欢提供的代码。更简洁。

您在设计器中定义的officeName.Text的默认/启动值是多少?何时将其设置为所需字符串(会计办公室/注册办公室)?它基于我的小程序的登录屏幕。如果用户在登录时必须选择部门,则officeName将显示在主菜单上。因此,我还希望根据登录选择,将文件存储到不同办公室的不同文件夹中。这就像一个用于两个不同办公室的程序。您可能想搜索并了解如何从文本框中获取值。。。如果您在给用户输入值的机会时调用它,那么您拥有的代码就可以工作了……这对于从表单上的文本框中读取值来说真是一个奇怪的替代品。。。你可能想解释一下你用这段代码试图回答的问题。@AlexeiLevenkov你是什么意思?用户从组合中选择一个项目,该项目的文本被传递到主菜单表单以初始化文件夹路径中使用的office字段。似乎有一种假设,即只需设置文本框的文本值,就可以神奇地调用initialzeOffice方法。解决方案是使用上述代码或在设置文本框的text属性后调用initializeOffice()。如果我遗漏了什么,很高兴被纠正。我现在明白了。。。这个问题和OP实际需要什么完全并没有关系,正如你们所回答的那个样,它似乎是“将值传递到表单”,但询问文本字段的读取值。。。您可能希望与OP一起调整问题和答案……您是否也修改了构造函数签名以要求使用字符串参数?您遇到了什么错误?(CodexNZ,如果您没有在评论中提供@,如果有多个评论,则不会通知任何人)