Ваш Paint
код неверный. Вы передали объект Graphics
в PaintEventArgs
.
Вам не нужно (и не следует) звонить CreateGraphics
.
uc.Paint += new PaintEventHandler((object s, PaintEventArgs pe) => {
pe.Graphics.DrawString("hello", this.Font, Brushes.Black, 0, 0);
});
Файл изображения, который вы создаете, вероятно, пуст, потому что клиентская область формы еще не была нарисована во время выполнения кода DrawToBitmap
в событии Load
.
Это должно нормально работать в ответ на нажатие кнопки. Что поднимает вопрос о том, почему код находится в обоих местах для начала.
Трудно сказать, в чем проблема с вашим кодом VB.NET, учитывая, что вы его не показывали. Но было бы неплохо выполнить все это создание / инициализацию UserControl внутри конструктора формы , а не в ответ на событие Load
.