C # - ContextMenuStrip.close () проблема - PullRequest
1 голос
/ 27 июля 2011

У меня есть некоторый элемент управления картой, и когда я щелкаю по нему, я открываю contextMenuStrip, а затем щелкаю для снимка моей карты. Проблема в том, что когда я нажимаю на снимок, это карта снимка , включая contextMenuStrip . Я пытаюсь с "contextMenuStrip.Close ()", но не работает.

//on map click event
private void map1_Click(MouseEventArgs e)
{
   System.Drawing.Point point = new System.Drawing.Point(e.X, e.Y + 160);
   contextMenu.Show(this.contextMenu, point);
}


//item of contextMenu
private void contextMenuConvert_Click(object sender, EventArgs e)
{
   contextMenu.Close();
   map.CreateImage(ImageFormat.Jpeg);
}

Изображение примера.

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Это просто отправляет сообщение, которое находится в очереди. Если вы хотите убедиться, что это действительно сделано, используйте Application.DoEvents () между вызовом Close и вызовом CreateImage.

0 голосов
/ 27 июля 2011

Вместо того, чтобы пытаться сделать снимок экрана (что, я полагаю, вы делаете), вы можете добавить код к своему объекту карты, который позволяет ему визуализироваться в изображение вне экрана? Таким образом, вызывающая сторона может сохранить это изображение в файл или сделать с ним все, что захочет. Вы сможете повторно использовать практически весь текущий код рендеринга с небольшими изменениями, чтобы поддержать идею рендеринга за пределами экрана.

...