Почему мой код, сгенерированный дизайнером (InitializeComponent()), не создает строку создания экземпляра объекта для моC#

Место общения программистов C#
Anonymous
Почему мой код, сгенерированный дизайнером (InitializeComponent()), не создает строку создания экземпляра объекта для мо

Сообщение Anonymous »

Сведения о среде:
  • .NET 4.8
  • Visual Studio 2022
    < li>Интерфейс дизайнера (если он так называется)
Я создал пользовательскую форму под названием WeatherBox, которая наследуется от другой пользовательской формы MultiSelectComboBox. После создания проекта я могу выбрать элемент WeatherBox в окне панели инструментов и создать его в представлении дизайнера.
Однако при создании проекта после добавления WeatherBox в форму, выдается ошибка, поскольку код, сгенерированный дизайнером, не включает строку, создающую экземпляр пользовательского класса (как это обычно бывает, и это происходит с MultiSelectComboBox, который WeatherBox наследует от ). Очевидно, я могу вручную исправить ошибку, реализовав создание экземпляра самостоятельно, но это будет сложно делать каждый раз, когда я хочу создать новый WeatherBox.
Вот Класс WeatherBox:

Код: Выделить всё

using [redacted].Util;
using [redacted].GUI.CustomizedControls;
using [redacted].GUI.CustomizedControls.MultiSelectComboBoxControl;
using System;
using System.Windows.Forms;

namespace [redacted].GUI.CustomizedControls.MultiSelectComboBoxControl.CustomMultiSelectComboBoxes
{
public class WeatherBox : MultiSelectComboBox
{
WeatherBox() : base()
{
ListItemSelected += new System.EventHandler(WeatherYearBox_ListItemSelected);
}

private static void WeatherYearBox_ListItemSelected(object sender, EventArgs e)
{
try
{
CheckedListView CLV = (CheckedListView)sender;
MultiSelectComboBox CMB = (MultiSelectComboBox)CLV.Tag;

if (CMB.List.FocusedItem != null && CMB.List.FocusedItem.Text != "")
{
CMB.close();
CMB.Tag = CMB.List.FocusedItem.Tag;
CMB.Items.Insert(0, CMB.List.FocusedItem.Text);
CMB.SelectedIndex = 0;
}
else
CMB.Tag = null;
}
catch (Exception ex)
{
Logger.logInfo(ex);
}
}
}
}
MultiSelectComboBoxControl — довольно большой класс, поэтому я просто скопировал его экземпляр (не уверен, насколько это имеет отношение к проблеме):

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
using [redacted].Util;
using System.Text.RegularExpressions;
using System.Drawing;

namespace SERVM.MCFRED.GUI.CustomizedControls.MultiSelectComboBoxControl
{
public class MultiSelectComboBox : ComboBox
{
public MultiSelectComboBox() : base()
{
contents.Owner = this;
contents.searchbox.Tag = this;
contents.searchBoxPic.Tag = true;
popup = new Popup(contents);
popup.Resizable = true;
popup.Height = 500;
popup.Tag = this;
popup.LostFocus += new EventHandler(popup_LostFocus);
popup.VisibleChanged += new EventHandler(popup_VisibleChanged);
contents.resizeBox.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
contents.resizeBox.MouseUp += new MouseEventHandler(pictureBox1_MouseUp);
contents.resizeBox.MouseMove += new MouseEventHandler(pictureBox1_MouseMove);

if (!isMultiSelectEnable)
{
}

contents.checkedListView.Tag = popup;

List = contents.checkedListView;
List.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
List.Click += new EventHandler(delegate { });

SuspendLayout();
Name = "MultiSelectComboBox";
Size = new System.Drawing.Size(237, 23);
DropDownHeight = 1;
DropDownStyle = ComboBoxStyle.DropDownList;
Click += new EventHandler(SortableDropDown_Click);
MouseHover += new EventHandler(MultiSelectComboBox_MouseHover);
MouseWheel += new MouseEventHandler(MultiSelectComboBox_MouseWheel);
Layout += new LayoutEventHandler(MultiSelectComboBox_Layout);
ResumeLayout(false);
}
}
}
Большинство всего здесь — устаревший код, простите за беспорядок.
А что касается кода, сгенерированного дизайнером: он генерирует следующие строки для обоих пользовательских элементы управления вне InitializeComponent():

Код: Выделить всё

private CustomizedControls.MultiSelectComboBoxControl.CustomMultiSelectComboBoxes.WeatherBox weatherBox1;
private CustomizedControls.MultiSelectComboBoxControl.MultiSelectComboBox multiSelectComboBox1;
Но внутри InitializeComponent() вверху генерируется:

Код: Выделить всё

this.multiSelectComboBox1 = new [redacted].GUI.CustomizedControls.MultiSelectComboBoxControl.MultiSelectComboBox();
Но не генерирует то, что, как я предполагаю, должно:

Код: Выделить всё

this._weatherYearBox = new [redacted].GUI.CustomizedControls.MultiSelectComboBoxControl.CustomMultiSelectComboBoxes.WeatherBox();
Спасибо, что обратили внимание на мою проблему!
Я пробовал собирать, пересобирать и очищать решение в сочетании с перезапуском Visual Studio. , а также удаление/добавление подписи : base() после конструктора WeatherBox (я скопировал ее, потому что увидел, что она присутствует в классе MultiSelectComboBox, который работал, но наличие или отсутствие : base() после конструктора, похоже, не имеет значения") - мне, вероятно, следует выяснить, что это значит. Сделаю после завершения этого поста.
Ни одно из этих решений не помогло. Генератор кода дизайнера не работает, когда я пытаюсь реализовать WeatherBox.>

Подробнее здесь: https://stackoverflow.com/questions/787 ... te-an-obje

Вернуться в «C#»