Ich habe ein benutzerdefiniertes Benutzersteuerelement, das eine Ausnahme auslöst, wenn versucht wird, es der Designeransicht hinzuzufügen. (More information on that bug here)Wie kann DesignerSerializerAttribute für ein benutzerdefiniertes Benutzersteuerelement verwendet werden?
Mir wurde gesagt, dass ich dem Entwerfer erklären muss, diese Kontrolle nicht zu bestätigen, also es nicht serialize. Ich habe dieses MSDN article gefunden, das zu tun scheint, was ich will. Ich nehme an, das wird hoffentlich meinen Fehler beheben! :) (Wenn Sie bessere Ideen haben, lassen Sie mich bitte wissen, wie Sie diesen Fehler beheben können.)
Wie kann ich diese Metadaten zu meiner Klasse zu Hidden oder Content hinzufügen? Vielen Dank!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.ObjectModel;
using System.Runtime.Serialization;
using System.ComponentModel.Design.Serialization;
namespace WinformsPlayground
{
[DesignerSerializerAttribute()] //THE QUESTION IS HERE!
public partial class HorizontalPictureScroller : UserControl
{
public HorizontalPictureScroller()
{
InitializeComponent();
Pictures = new ObservableCollection<SelectablePicture>();
Pictures.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Pictures_CollectionChanged);
}
#region "Properties"
public ObservableCollection<SelectablePicture> Pictures { get; set; }
private int PositionControlX = 0;
#endregion
#region "Methods"
private void RedrawPictures()
{
PositionControlX = 0;
foreach (var picture in Pictures)
{
picture.Location = new Point(PositionControlX + panelPicturesWrapper.AutoScrollPosition.X, 0);
PositionControlX += 130;
panelPicturesWrapper.Controls.Add(picture);
}
}
public void AddPicture(SelectablePicture picture)
{
Pictures.Add(picture);
}
public void RemovePicture(SelectablePicture picture)
{
Pictures.Remove(picture);
}
public void MovePictureLeft(int index)
{
SelectablePicture tmpPicture = Pictures[index];
Pictures[index] = Pictures[index - 1];
Pictures[index - 1] = tmpPicture;
}
public void MovePictureRight(int index)
{
SelectablePicture tmpPicture = Pictures[index];
Pictures[index] = Pictures[index + 1];
Pictures[index + 1] = tmpPicture;
}
#endregion
#region "Events"
void Pictures_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
RedrawPictures();
}
#endregion
}
}
EDIT: Nach Beratung hier habe ich diese an die Spitze der Klasse, aber ich erhalte eine Fehlermeldung beim Kompilieren.
namespace WinformsPlayground
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public partial class HorizontalPictureScroller : UserControl
{
public HorizontalPictureScroller()
{
InitializeComponent();
Pictures = new ObservableCollection<SelectablePicture>();
Pictures.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(Pictures_CollectionChanged);
}
Fehler ist:
Error 1 Attribute 'DesignerSerializationVisibility' is not valid on this declaration type. It is only valid on 'method, property, indexer, field, event' declarations. C:\Users\Sergio.Tapia\documents\visual studio 2010\Projects\WinformsPlayground\WinformsPlayground\HorizontalPictureScroller.cs 15 6 WinformsPlayground
möglich Duplikat [Visual Studio feuert einen Fehler, wenn ich meine Benutzersteuerung auf die Entwurfsansicht ziehen.] (Http: // stackoverflow.com/questions/4304276/visual-studio-fires-an-error-when-i-drag-my-user-control-onto-the-design-view) –
Nun, ich verknüpfte die Frage oben, so zu sagen, es ist ein Duplikat ist kurzsichtig. Dies ist eine andere Frage vollständig. –