Отладка пользовательского элемента управления не достигает точки останова

1

Правильно, похоже, я не могу найти это на SO, я уверен, его, должно быть, спросили раньше, во всяком случае....

Проще говоря, я создаю новый настраиваемый элемент управления с нуля, и у меня есть метод:

private void Foo()

Я звоню прямо из конструктора. Я поставил точку останова в Foo(), но отладчик никогда не останавливается на этой точке останова, он просто показывает тестовый контейнер:

Изображение 174551

Кто-нибудь знает, как отключить отладчик в точке останова, не переходя прямо в диалог Test Container.


КОД

За контролем:

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
   }
}
  • 0
    Если вы поставили точку останова на линии, в которой вы создали элемент управления, и пошлили вручную (F11), он все равно пропустил ее?
  • 1
    Не могли бы вы попробовать BUILD> Clean Solution и перезапустить отладчик. Есть ли другие точки останова?
Показать ещё 7 комментариев
Теги:
winforms
debugging

1 ответ

2
Лучший ответ

Похоже, вы разработали UI Control, но не добавили его в свою основную форму.

Вы действительно вызываете AreaPickerDotNet() из любого приложения? Я думаю, что вам нужно добавить свой пользовательский интерфейс в свою форму через конструктор или из кода напрямую.


Обновление: после вашего комментария я остановился, чтобы понять ваш вопрос.

  1. Вы не можете отлаживать проект библиотеки, поэтому у вас есть проект в вашем решении, которое выполняется во время отладки.
  2. Если ваш код реализует настраиваемый элемент управления пользовательским интерфейсом, вы не можете просто отлаживать его - для запуска кода, который вы должны добавить вручную, с помощью кода или дизайнера на какой-либо WinForm в своем приложении.
  3. Тот факт, что вы добавили ссылку на свою библиотеку управления UI, недостаточно для запуска элемента управления - это просто ссылка, которая бесполезна, пока вы не добавите элемент управления в свои WinForms.
  • 0
    Нет, я просто создаю пользовательский элемент управления в типе проекта: библиотека элементов управления Windows. После этого я должен иметь возможность распределить и добавить контроль в любой проект winforms, который я выберу.
  • 0
    @Vidar Обновил ответ. Я думаю, что вы просто не до конца понимаете необходимость контроля пользовательского интерфейса.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню