Скопируйте и вставьте данные в C#
Пример
Ключ состоит в том, чтобы сделать одну переменную, удерживая весь чертеж, и пометить его как сериализуемую. Затем вы можете копировать экземпляры этого класса в буфер обмена.
В этом примере хранится информация о чертеже в следующем классе Polyline.
[Serializable()] public class Polyline { [XmlIgnore] public Color Color = Color.Black; public int Thickness = 1; public DashStyle DashStyle = DashStyle.Solid; public ListPoints = new List (); // Получить или установить цвет как значение ARGB. public int Argb { get { return this.Color.ToArgb(); } set { Color = Color.FromArgb(value); } } public void Draw(Graphics gr) { using (Pen the_pen = new Pen(Color, Thickness)) { the_pen.DashStyle = DashStyle; if (DashStyle == DashStyle.Custom) { the_pen.DashPattern = new float[] { 10, 2 }; } gr.DrawLines(the_pen, Points.ToArray()); } } }
Единственная важная часть здесь состоит в том, что класс помечен атрибутом Serializable.
Основная программа хранит ряд объектов Polyline в следующем списке.
// Полилинии, которые мы рисуем. private ListPolylines = new List ();
Следующий код копирует текущий чертеж в буфер обмена.
// Скопируйте записную книжку в буфер обмена. private void mnuEditCopy_Click(object sender, EventArgs e) { Clipboard.SetDataObject(Polylines); }
Следующий код вставляет рисунок в буфер обмена.
// Вставьте каракули из буфера обмена. private void mnuEditPaste_Click(object sender, EventArgs e) { IDataObject data_object = Clipboard.GetDataObject(); if (data_object.GetDataPresent(Polylines.GetType())) { Polylines = (List)data_object.GetData( Polylines.GetType()); if (Polylines == null) Polylines = new List (); picCanvas.Refresh(); } }
Этот код использует метод GetDataObject буфера обмена для получения объекта данных буфера обмена. Если метод GetDataPresent этого объекта указывает, что List & lt; Polyline & gt; , код использует метод GetData объекта данных для его получения. Он преобразует возвращенный общий объект в List & lt; Polyline & gt;, сохраняет результат в переменной Polylines программы и перерисовывает.