我不想使用某种goto语句,但我希望用户在执行默认情况时返回主菜单.怎么样??我知道这是一个简单的问题,但必定会有很多新手遇到非常相似的东西.
static void buycoffee()
{
Double price = 0;
int x = 0;
while (x == 0)
{
Console.WriteLine("Pick a coffee Size");
Console.WriteLine("1: Small");
Console.WriteLine("2: Medium");
Console.WriteLine("3: Large");
int Size = int.Parse(Console.ReadLine());
switch (Size)
{
case 1:
price += 1.20;
break;
case 2:
price += 1.70;
break;
case 3:
price += 2.10;
break;
default:
Console.WriteLine("This option does not exist");
///how to return to the main menu here
break;
}
Console.WriteLine("Would you like to buy more coffee?");
String Response = Console.ReadLine().ToUpper(); …Run Code Online (Sandbox Code Playgroud) 当我单击Windows窗体上的复选框时,它会启用一个文本框并将光标置于其中以备输入.代码相对简单:
private void chkLatte_CheckedChanged(object sender, EventArgs e)
{
if(chkLatte.Checked)
{
txtLatte.Enabled = true;
txtLatte.Focus();
}
else
{
txtLatte.Enabled = false;
txtLatte.Text = "0";
}
}
Run Code Online (Sandbox Code Playgroud)
现在,这就是问题.我有很多这些复选框,所以我想要的是这样的:
public void setCheckBox(string chkName, string txtName)
{
if (chkName.Checked)
{
txtName.Enabled = true;
txtName.Focus();
}
else
{
txtName.Enabled = false;
txtName.Text = "0";
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我可以调用该方法并传递适当的参数,如下所示:
private void chkMocha_CheckedChanged(object sender, EventArgs e)
{
setCheckBox(chkMocha,txtMocha);
}
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用:.Checked .Enabled .Focus()等只能使用复选框对象,我将chkName定义为字符串
我应该如何重新编写程序setCheckBox来克服这个问题?
我有一个应该播放音乐文件的子.我可以轻松找到MyDocuments.我甚至可以使用Path.Combine来连接字符串的其余部分.
完整路径应如下所示:
......文档\ JUKEBOX \迈克尔·杰克逊\ 01.wav
但我得到的是双斜线而不是单斜线
private static void playChoice(string band, int choice)
{
var myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string filename = "0" + choice;
string[] paths = { myDocs, "JukeBox", band, filename, ".wav" };
var fullPath = Path.Combine(@paths);
var player = new System.Media.SoundPlayer(fullPath);
player.Play();
}
Run Code Online (Sandbox Code Playgroud)
A)如何删除双斜杠,因为我的逐字说明符不起作用B)代码看起来很糟糕 - 是否有更好的方法 - 或者是否有人链接到有用的文献