Скопируйте и вставьте данные в C#
Пример , показывает, как сделать простую программу рисования. Пример показывает, как копировать объекты в буфер обмена. Этот пример объединяет два примера, чтобы сделать программу scribble, которая позволяет копировать и вставлять чертежи.
Ключ состоит в том, чтобы сделать одну переменную, удерживая весь чертеж, и пометить его как сериализуемую. Затем вы можете копировать экземпляры этого класса в буфер обмена.
В этом примере хранится информация о чертеже в следующем классе Polyline.
[Serializable()]
public class Polyline
{
[XmlIgnore] public Color Color = Color.Black;
public int Thickness = 1;
public DashStyle DashStyle = DashStyle.Solid;
public List Points = 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 программы и перерисовывает.
