Windows 10 1803 x64, сборка 17134.165, Visual Studio 2017 15.7.5 c #
У меня есть настраиваемое поле со списком в форме. Если я создам решение, ориентированное на любой ЦП, проблем не возникает, но если я изменю целевое значение на x64, я получаю эту ошибку в конструкторе, и поле со списком удаляется из панели инструментов. Код в файле designer.cs не поврежден, и программа по-прежнему работает нормально.
Could not find type 'TestCustomComboBox.ComboBoxCustom'. Please make sure that the assembly that contains this type is referenced. If this type is a part of your development project, make sure that the project has been successfully built using settings for your current platform or Any CPU.
Если я вернусь к любому процессору, ошибка исчезнет, и поле со списком вернется в панель инструментов. Мой компьютер x64.
Полная программа испытаний:
using System.Drawing;
using System.Windows.Forms;
namespace TestCustomComboBox
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
/// <summary>
/// Custom combobox with colour coding
/// </summary>
public class ComboBoxCustom : ComboBox
{
public ComboBoxCustom()
{
this.DrawMode = DrawMode.OwnerDrawFixed;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
base.OnDrawItem(e);
e.DrawBackground();
var item = (ComboBoxItem)Items[e.Index];
Brush brush = new SolidBrush(item.ForeColor);
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{ brush = Brushes.Yellow; }
e.Graphics.DrawString(item.Text, this.Font, brush, e.Bounds.X, e.Bounds.Y);
}
}
public class ComboBoxItem
{
public ComboBoxItem() { }
public ComboBoxItem(string pText, object pValue)
{
text = pText; val = pValue;
}
public ComboBoxItem(string pText, object pValue, Color pColor)
{
text = pText; val = pValue; foreColor = pColor;
}
string text = "";
public string Text
{
get { return text; }
set { text = value; }
}
object val;
public object Value
{
get { return val; }
set { val = value; }
}
Color foreColor = Color.Black;
public Color ForeColor
{
get { return foreColor; }
set { foreColor = value; }
}
public override string ToString()
{
return text;
}
}
public class ComboObject
{
public string DisplayMembers;
public int ValueMembers;
public int argb;
public ComboObject(string theDisplayMembers, int theValueMembers, int theArgb)
{
DisplayMembers = theDisplayMembers;
ValueMembers = theValueMembers;
argb = theArgb;
}
public override string ToString()
{
return DisplayMembers;
}
}
}