调试Windows窗体应用程序C#添加监视

时间:2016-03-15 18:46:51

标签: c# windows winforms

我在Windows窗体应用程序中编码很新(一般来说编码也很新)。我试图调试我的代码。我在调试时总是使用手表但是我似乎无法将任何变量添加到监视列表中。有谁知道为什么?

具体来说,我试图找出以下两个变量的错误: 1.用户 2. PathName

一旦我想到这一点,我想在文本框中显示字符串ImageFileWrapper" ImageFileWrapperPath"。

非常感谢每一点帮助。如果可能的话,我想有解释,以便我可以为将来学习。

请参阅下面的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void ChooseImageFileWrapper_Click(object sender, EventArgs e)
        {
            String TheUser = Environment.UserName;
            String PathName = "C:\Users\" + TheUser + "\Dropbox\PATENT\Waks & Co\";
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.InitialDirectory = PathName;
            openFileDialog1.Filter = "Pdf Files|*.pdf";
            openFileDialog1.RestoreDirectory = true;
            openFileDialog1.Title = "Image File Wrapper Chooser";

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    String ImageFileWrapper = openFileDialog1.FileName;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
                }
            }
        }

        private void ImageFileWrapperPath_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

2 个答案:

答案 0 :(得分:2)

我不知道您将这些变量添加到监视列表有什么问题。通常在所需点上设置断点,运行程序直到遇到断点,然后右键单击变量名称并选择Add Watch ....
顺便说一句,作为这些变量,局部变量,你不需要将它们添加到Watch窗口,它们已经在Locals窗口中(DEBUG-> WINDOW-> Locals)

但是你的代码在这一行中有一个简单的错误

String PathName = "C:\Users\" + TheUser + "\Dropbox\PATENT\Waks & Co\";

在C#中,需要将反斜杠转义为加倍,或者在整个字符串前加上像这样的逐字字符

String PathName = @"C:\Users\" + TheUser + "\Dropbox\PATENT\Waks & Co\";

最后我建议避免构建手动路径字符串,而是使用Path.Combine方法

String PathName = Path.Combine(@"C:\Users",TheUser,@"Dropbox\PATENT\Waks & Co\");

最后一点,您可以使用此代码获取用户目录

string userdir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
string  PathName = Path.Combine(userdir, @"Dropbox\PATENT\Waks & Co\");

如果用户通过操作系统工具更改了其用户文件夹,这也会起作用。

答案 1 :(得分:0)

所以我也是编程新手。但我会尽力帮助我。所以对你的

String PathName =“C:\ Users \”+ TheUser +“\ Dropbox \ PATENT \ Waks& Co \”;

看起来你有很多问题。

首先,你需要在你所有人面前,因为代码认为这是一个转义字符。我注意到的第二件事是你的+ TheUser +和;仍然是字符串的一部分,而不是连接。所以这是我的代码没有给我任何错误或警告。

String PathName =“'C:\\ Users \\'”+ TheUser +“'\\ Dropbox \\ PATENT \\ Waks& Co \\'”;

现在,对于TheUser变量,您是否获得了文本框的信息?