调试自定义控件未命中断点

Debugging Custom Control Not Hitting Breakpoint

对,好像在SO上找不到这个,我敢肯定之前一定有人问过,反正....

简而言之,我正在从头开始创建一个新的自定义控件并且我有一个方法:

private void Foo()

我直接从构造函数调用。我在 Foo() 中放置了一个断点,但调试器从未在此断点处停止,它只显示测试容器:

任何人都知道如何使调试器在断点处停止而不直接进入“测试容器”对话框。


代码

后控:

namespace AreaPickerDotNet
{
    public partial class AreaPickerDotNet : UserControl
    {

        Assembly _assem;

        public AreaPickerDotNet()
        {

            InitializeComponent();

            _assem =  Assembly.GetExecutingAssembly();

            Foo();
        }


        private void Foo()
        {

            try
            {
                StreamReader _textStreamReader = new StreamReader(_assem.GetManifestResourceStream("foo.txt"));
                MessageBox.Show(_textStreamReader.GetHashCode().ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                throw;
            }

        }
    }
}

设计师代码:

namespace AreaPickerDotNet
{
    partial class AreaPickerDotNet
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)

        {
           if (disposing && (components != null))
           {
              components.Dispose();
           }
           base.Dispose(disposing);
        }

       #region Component Designer generated code

       /// <summary>
       /// Required method for Designer support - do not modify 
       /// the contents of this method with the code editor.
       /// </summary>
       private void InitializeComponent()
       {
          this.SuspendLayout();
          // 
          // AreaPickerDotNet
          // 
          this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
          this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
          this.Name = "AreaPickerDotNet";
          this.Size = new System.Drawing.Size(291, 259);
          this.ResumeLayout(false);

       }

       #endregion
   }
}

看起来您已经开发了 UI 控件,但没有将它添加到您的主窗体中。

你真的从你的应用程序中的任何地方调用 AreaPickerDotNet() 方法吗?我认为您需要通过设计器或直接从代码将 UI 控件添加到表单。


更新: 在您发表评论后,我停下来了解您的问题。

  1. 您无法调试库项目,因此您的解决方案中有一个项目在调试期间 运行。
  2. 如果您的代码实现了自定义 UI 控件,您不能只调试它 - 要 运行 您 必须 添加控件的代码通过应用程序中某些 WinForm 上的代码或设计器手动。
  3. 您添加了对 UI 控件库的引用这一事实不足以 运行 控件 - 它只是一个引用,在您将控件添加到您的WinForms.