Возможно, нет простого решения для этого, но в основном я хочу сохранить способ управления множеством элементов управления и их свойств.Сохранение массива элементов управления и свойств, которые будут использоваться позднее
Я разрешаю пользователю добавлять элементы управления, такие как изображения и метки (во время выполнения). Я хочу, чтобы в какой-то момент вернемся ко всем этим элементам управления, как PowerPoint. Они могут добавлять элементы управления только к определенной панели.
Сначала я подумал о сохранении свойств для каждого элемента управления в текстовом документе, пройдя через свойства каждого элемента управления и записав их в одну строку, разделив их на «¬», чтобы их можно было разделить, но я очень запутался и прочитал и писать на конкретные строки немного сложнее, чем я себе представлял, хотя я и сделал это в конце.
Мое настоящее решение состоит в том, чтобы просто «снимок» панели и сохранить изображение, но быстро понял, что это, вероятно, не самый эффективный способ хранения.
Код для «сфотографировать панели» ...
Using bmp As New Bitmap(QuizDesignPanel.Width, QuizDesignPanel.Height)
bmp.SetResolution(My.Computer.Screen.BitsPerPixel, My.Computer.Screen.BitsPerPixel)
QuizDesignPanel.DrawToBitmap(bmp, New Rectangle(0, 0, QuizDesignPanel.Width, QuizDesignPanel.Height))
bmp.Save(QuizPath & "\" & FileName & Number & ".png", Imaging.ImageFormat.Png)
End Using
... Очевидно, есть несколько переменных в там, которые объявлены в другом месте.
Мне просто интересно было ли я возглавить в неправильном направлении и есть ли лучший способ сохранить свойства.
Возможно, я не очень хорошо объяснил, но я уверен, что вы получите то, что я говорю. Спасибо за вашу помощь заранее.
Кроме того, есть ли простой способ скопировать и вставить элемент управления во время выполнения? Поскольку в настоящее время я просто сохраняю свойства в буфер обмена как текст, а затем ссылаюсь на них при вставке элемента управления.
EDIT
Friend Class SavedControl
Friend theName As String
Friend theSize As Size
Friend theLocation As Point
Friend imgFile As String
End Class
Private Sub TopPanel_Paint(sender As Object, e As PaintEventArgs) Handles TopPanel.Paint
Dim SaveCtl As New SavedControl
Dim myList As Collection
For Each n As Control In QuizDesignForm.QuizDesignPanel.Controls
SaveCtl.theSize = n.Size
SaveCtl.theName = n.Name
SaveCtl.theLocation = n.Location
myList.Add(SaveCtl)
Next
Try
Dim fs As New FileStream(My.Computer.FileSystem.SpecialDirectories.Desktop, FileMode.Create, FileAccess.Write)
Serializer.Serialize(fs, myList)
fs.Close()
fs.Dispose()
Catch ex As Exception
MessageBox.Show("Oops!", "Title", MessageBoxButtons.OK, _
MessageBoxIcon.Exclamation)
End Try
End Sub
Serializer подчеркнут, и я не уверен, что я объявил MyList правильно (я импортировал System.IO & System.Xml.Serialization, если это имеет значение)
Не могли бы вы объяснить, что у непрофессионала, что здесь происходит, пожалуйста. Большинство из них имеет смысл, но как это сохранить элементы управления, где, какой тип файла, как я читаю данные, чтобы поместить их обратно в свою панель ... и т. Д. Спасибо за быстрый ответ кстати :) –
ответил на изменение – Plutonix
Я еще не добрался до этого бита, так как не ожидал ответа так быстро. Я буду держать вас в курсе, если что-то пойдет не так, или правильно, если на то пошло. Между тем, я отвечу как ответ. Спасибо Плутоникс! –