C# 在IF-ELSE中使用我的字符串

C# 在IF-ELSE中使用我的字符串,c#,wpf,string,if-statement,C#,Wpf,String,If Statement,我真的是个编码高手这是我的第一个程序,也是我第一次接触编码软件。 首先,让我向您展示我拥有的: private void SaveClose_Click(object sender, RoutedEventArgs e) { using (var fs = new FileStream(@"Resources\arguments.txt", FileMode.Truncate)) { } if (Windowed.IsChecked == true)

我真的是个编码高手这是我的第一个程序,也是我第一次接触编码软件。

首先,让我向您展示我拥有的:

private void SaveClose_Click(object sender, RoutedEventArgs e)
{
    using (var fs = new FileStream(@"Resources\arguments.txt", FileMode.Truncate))
    {
    }

    if (Windowed.IsChecked == true)
        windowed = true;
    else
        windowed = false;

    string text = File.ReadAllText(@"Resources\arguments.txt");

    string createTextWindowed = "-screen-fullscreen 0" + Environment.NewLine;
    File.WriteAllText(@"Resources\arguments.txt", createTextWindowed);

    string createTextFullscreen = "-screen-fullscreen 1" + Environment.NewLine;
    File.WriteAllText(@"Resources\arguments.txt", createTextFullscreen);


    if (windowed == true)
        createTextWindowed 
    else
        createTextFullscreen
}
第21行和第23行(
createTextWindowed
createTextFullscreen
)是错误,我想修复它们,但我是个笨蛋,所以我不知道如何使用我制作的字符串,如果windowed=true(我想你知道了),我想让程序写入txt文件“-screen fullscreen 0”,如果windowed=true(我想你知道了),如果windowed=false,则写入1,我试过这个,但当然不行:)

试试这个

private void SaveClose_Click(object sender, RoutedEventArgs e)
{
    string text = File.ReadAllText(@"Resources\arguments.txt");

    string createTextWindowed = "-screen-fullscreen 0" + Environment.NewLine;
    string createTextFullscreen = "-screen-fullscreen 1" + Environment.NewLine;

    if (Windowed.IsChecked == true)
    {
          File.WriteAllText(@"Resources\arguments.txt", createTextWindowed);
    }
    else
    {
          File.WriteAllText(@"Resources\arguments.txt", createTextFullscreen);
    }
}
试试这个

private void SaveClose_Click(object sender, RoutedEventArgs e)
{
    string text = File.ReadAllText(@"Resources\arguments.txt");

    string createTextWindowed = "-screen-fullscreen 0" + Environment.NewLine;
    string createTextFullscreen = "-screen-fullscreen 1" + Environment.NewLine;

    if (Windowed.IsChecked == true)
    {
          File.WriteAllText(@"Resources\arguments.txt", createTextWindowed);
    }
    else
    {
          File.WriteAllText(@"Resources\arguments.txt", createTextFullscreen);
    }
}

您只需稍微更改一下最终逻辑:

if (windowed == true)
{
    string createTextWindowed = "-screen-fullscreen 0" + Environment.NewLine;
    File.WriteAllText(@"Resources\arguments.txt", createTextWindowed);
}
else
{
    string createTextFullscreen = "-screen-fullscreen 1" + Environment.NewLine;
    File.WriteAllText(@"Resources\arguments.txt", createTextFullscreen);
}

然后在末尾取消检查

您只需要稍微更改一下最终逻辑:

if (windowed == true)
{
    string createTextWindowed = "-screen-fullscreen 0" + Environment.NewLine;
    File.WriteAllText(@"Resources\arguments.txt", createTextWindowed);
}
else
{
    string createTextFullscreen = "-screen-fullscreen 1" + Environment.NewLine;
    File.WriteAllText(@"Resources\arguments.txt", createTextFullscreen);
}

然后在结尾处取消勾选

代码的逻辑顺序需要更改,因此:

    string text = File.ReadAllText(@"Resources\arguments.txt");

    if (Windowed.IsChecked)
    {
      text = text + "-screen-fullscreen 0" + Environment.NewLine;
    }
    else
    {
      text = text + "-screen-fullscreen 1" + Environment.NewLine;
    }

    File.WriteAllText(@"Resources\arguments.txt", text);
不需要使用指令
,因此可以删除该指令

另外,如果未在此范围之外使用
windowed
bool,则不需要它,您可以直接使用if语句中的windowed.IsChecked。这会稍微整理一下代码

然后你需要考虑代码的流程和逻辑。也许在一张纸上画出来,我的理解是:

  • 阅读
    “Resources\arguments.txt”
  • 如果
    Windowed.IsChecked
    为true,则将参数
    -全屏0
    添加到文本中
  • 否则,如果
    Windowed.IsChecked
    为false,则将参数
    -全屏0
    添加到文本中
  • 将新文本保存到文件中

  • 也许回顾一下您的原始代码时会记住以下步骤,看看您是否能够发现冗余代码。

    您的代码的逻辑顺序需要更改,因此:

        string text = File.ReadAllText(@"Resources\arguments.txt");
    
        if (Windowed.IsChecked)
        {
          text = text + "-screen-fullscreen 0" + Environment.NewLine;
        }
        else
        {
          text = text + "-screen-fullscreen 1" + Environment.NewLine;
        }
    
        File.WriteAllText(@"Resources\arguments.txt", text);
    
    不需要使用
    指令
    ,因此可以删除该指令

    另外,如果未在此范围之外使用
    windowed
    bool,则不需要它,您可以直接使用if语句中的windowed.IsChecked。这会稍微整理一下代码

    然后你需要考虑代码的流程和逻辑。也许在一张纸上画出来,我的理解是:

  • 阅读
    “Resources\arguments.txt”
  • 如果
    Windowed.IsChecked
    为true,则将参数
    -全屏0
    添加到文本中
  • 否则,如果
    Windowed.IsChecked
    为false,则将参数
    -全屏0
    添加到文本中
  • 将新文本保存到文件中
  • 也许回顾一下您的原始代码,记住这些步骤,看看您是否能够发现冗余代码

  • 您不需要这样做,因为File.writealText无论如何都会截断文件

    using (var fs = new FileStream(@"Resources\arguments.txt", FileMode.Truncate))
    {
    }
    
  • 删除这个,因为它似乎没有你正在使用它

    string text = File.ReadAllText(@"Resources\arguments.txt");
    
  • 定义一个字符串变量,根据是否打开窗口来设置要写入的文本

    string textWrite;
    
    if (windowed == true)
    {
        textWrite = "-screen-fullscreen 0" + Environment.NewLine;
    }
    else
    {
        textWrite = "-screen-fullscreen 1" + Environment.NewLine;
    }
    
  • 最后,把文本写在文件里

    File.WriteAllText(@"Resources\arguments.txt", textWrite);
    
  • 以下是更改后函数的完整代码:

    private void SaveClose_Click(object sender, RoutedEventArgs e)
    {
        if (Windowed.IsChecked == true)
            windowed = true;
        else
            windowed = false;
    
        string textWrite;
    
        if (windowed == true)
        {
            textWrite = "-screen-fullscreen 0" + Environment.NewLine;
        }
        else
        {
            textWrite = "-screen-fullscreen 1" + Environment.NewLine;
        }
    
        File.WriteAllText(@"Resources\arguments.txt", textWrite);
    }
    
  • 您不需要这样做,因为File.writealText无论如何都会截断文件

    using (var fs = new FileStream(@"Resources\arguments.txt", FileMode.Truncate))
    {
    }
    
  • 删除这个,因为它似乎没有你正在使用它

    string text = File.ReadAllText(@"Resources\arguments.txt");
    
  • 定义一个字符串变量,根据是否打开窗口来设置要写入的文本

    string textWrite;
    
    if (windowed == true)
    {
        textWrite = "-screen-fullscreen 0" + Environment.NewLine;
    }
    else
    {
        textWrite = "-screen-fullscreen 1" + Environment.NewLine;
    }
    
  • 最后,把文本写在文件里

    File.WriteAllText(@"Resources\arguments.txt", textWrite);
    
  • 以下是更改后函数的完整代码:

    private void SaveClose_Click(object sender, RoutedEventArgs e)
    {
        if (Windowed.IsChecked == true)
            windowed = true;
        else
            windowed = false;
    
        string textWrite;
    
        if (windowed == true)
        {
            textWrite = "-screen-fullscreen 0" + Environment.NewLine;
        }
        else
        {
            textWrite = "-screen-fullscreen 1" + Environment.NewLine;
        }
    
        File.WriteAllText(@"Resources\arguments.txt", textWrite);
    }
    


    @这就是你想做的吗?我修改了你的代码,使之更加完善simple@mbadeveloper为什么你需要
    FileStream
    你正在使用
    File.writealText
    Mostafiz你是真的我删除了文件stream@Francefire请使用新的代码我现在完全糊涂了,当我想尝试它时,它说我的txt文件被另一个进程使用,但没有。。。它在另一个窗口(主窗口)中向我显示了一行,但这行应该只在我单击button@Francefire我不知道你为什么需要阅读第一条语句中的文件?如果您只想将文本写入文件并丢失文件内容,因为这对您不重要,请删除第一行字符串text=file.ReadAllText(@“Resources\arguments.txt”)@这就是你想做的吗?我修改了你的代码,使之更加完善simple@mbadeveloper为什么你需要
    FileStream
    你正在使用
    File.writealText
    Mostafiz你是真的我删除了文件stream@Francefire请使用新的代码我现在完全糊涂了,当我想尝试它时,它说我的txt文件被另一个进程使用,但没有。。。它在另一个窗口(主窗口)中向我显示了一行,但这行应该只在我单击button@Francefire我不知道你为什么需要阅读第一条语句中的文件?如果您只想将文本写入文件并丢失文件内容,因为这对您不重要,请删除第一行字符串text=file.ReadAllText(@“Resources\arguments.txt”);他们似乎想在“Resources\arguments.txt”文件中预先存在的文本中添加一个参数?如果没有确认,很难确定。我认为这是从另一个答案复制粘贴的错误,因为我不知道Filemode.Truncate实际上做了什么。尸体甚至不在使用指令中。然而,你确实提出了一个很好的观点。我们需要拭目以待。但现在我有一个问题,我必须把“argument.txt”的完整目录(C:\Users\baske\Desktop\Launcher\WpfApplication2\WpfApplication2\Resources\arguments.txt)放在不同的计算机上,但将来我希望该程序可以运行在不同的计算机上,我知道不是每个人都有和我一样的启动器(和游戏)目录,你能帮我吗?当我把
    @“Ressources\arguments.txt”
    放进去时,它不起作用,它没有编辑txtfile@Francefire看一看,我真的是个傻瓜,我不知道该把它们放在哪里,我试着用System.AppDoma