“输出”窗口中不显示 Console. WriteLine

我已经放入了一些 Console.WriteLine调用进行测试,但是它们没有出现在输出框中?

public static ArrayList myDeliveries = new ArrayList();


public mainForm(){
InitializeComponent();
}


private void mainForm_Load(object sender, EventArgs e){


if (!File.Exists("../../MealDeliveries.txt")){
MessageBox.Show("File not found!");
return;
}


using (StreamReader sr = new StreamReader("../../MealDeliveries.txt")){
//first line is delivery name
string strDeliveryName = sr.ReadLine();
Console.WriteLine("Test content");


while (strDeliveryName != null){


//other lines
Delivery d = new Delivery(
strDeliveryName,
sr.ReadLine(),
sr.ReadLine(),
sr.ReadLine(),
sr.ReadLine(),
sr.ReadLine(),
sr.ReadLine()
);


mainForm.myDeliveries.Add(d);


//check for further values
strDeliveryName = sr.ReadLine();
}
}


displayDeliveries();




}




private void displayDeliveries(){


lstDeliveryDetails.Items.Clear();
Console.WriteLine("Test content");
Console.WriteLine(mainForm.myDeliveries.Count);
foreach (Delivery d in mainForm.myDeliveries){
lstDeliveryDetails.Items.Add(d.DeliveryName);


}
}

有人能帮忙吗?

236429 次浏览

Console输出到控制台窗口,Winforms 应用程序不显示控制台窗口。您应该能够使用 System.Diagnostics.Debug.WriteLine将输出发送到 IDE 中的输出窗口。

Edit: In regards to the problem, have you verified your mainForm_Load is actually being called? You could place a breakpoint at the beginning of mainForm_Load to see. If it is not being called, I suspect that mainForm_Load is not hooked up to the Load event.

另外,重写 On{EventName}而不是从派生类中订阅 {EventName}(在您的例子中重写 OnLoad而不是 Load)更有效,通常也更好。

如果您打算在生产中使用这个输出,那么使用 Trace类成员。这使得代码具有可移植性,您可以将不同类型的侦听器连接起来,并将其输出到控制台窗口、调试窗口、日志文件或其他任何您喜欢的地方。

如果这只是一些临时调试代码,您正在使用这些代码来验证某些代码正在执行或具有正确的值,那么按照 扎克的建议使用 调试类。

如果您绝对必须使用控制台,那么您可以在程序的 Main方法中使用 连接控制台

如果希望在“调试输出”窗口中显示 Console.WriteLine("example text")输出,请将应用程序的“输出”类型从“控制台应用”临时更改为“ Windows 应用程序”。

从菜单中选择 Project + Properties,并导航到 Output 类型: 下拉菜单,切换到 Windows 应用程序,然后运行应用程序

当然,为了构建一个在 IDE 之外运行的控制台应用,您应该将其修改回原来的版本。

(tested with Visual Studio 2008 and 2010, expect it should work in latter versions too)

如果您正在开发一个命令行应用程序,您也可以在代码的末尾使用 Console.ReadLine(),在关闭控制台窗口之前等待“ Enter”按键,这样您就可以读取您的输出。但是,上面发布的 Trace 和 Debug 答案都是更好的选项。

当问题发生在 Mac VS 2017(这是我面临的)。

  1. 转到 Project > > “ Your Project name”选项。
  2. An option window will pop up
  3. 转到运行 > > 默认菜单选项
  4. 选择“在外部控制台上运行”选项 TRUE 并说 OK

现在运行应用程序代码。

对于 Windows 窗体/WPF 项目,使用 Console.WriteLine( "Test" );可以将日志消息写入 VisualStudio 中的“输出”窗口(视图菜单—— > 输出)。

然而,我遇到了一个情况,它不工作,只有 System.Diagnostics.Debug.WriteLine( "Test" );是工作。我重新启动了 VisualStudio,Console.WriteLine()又开始工作了。好像是 Visual Studio 的 bug。

旧线程,但在 VS 2015控制台。如果“启用 VisualStudio 宿主进程”未在“项目属性”中检查或禁用,则 WriteLine 不写到输出窗口-> “调试”选项卡

中取消选中“使用托管兼容模式”复选框

工具 = > 选项 = > 调试 = > 常规

这招对我很管用。

中的“将所有输出窗口文本重定向到即时窗口”复选框

Tools => Options => Debugging => General

我已经检查过了,所有内容都是在即时窗口中写入的,而不是在输出窗口中