Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Работа с формой: перетаскивание по экрану и прочее Добавлено: 23.01.11 02:52  

Автор вопроса:  QweЯty
есть форма form2 без всяких служебных клавиш и прочего...
не получается ее сдвинуть с места....

- какая функция обработки события отвечает за то чтобы если зажал на области формы 1хЛКМ, то можно было перетаскивать по экрану форму...

- есть "родительская" форма form1 где есть ColorDialog1 FontDialog1 Colordialog2... как сделать так чтобы менялся цвет form2 цвет букв в форме form2 и шрифт

- как сделать вывод небольшого меню 170*200 +/- пара пикселей:) чтобы показывалось от трея вверх(или чтобы можно было указать откуда оно должно появляться(с учетом того что на разных машинах разные диагонали/мониторы/разрешение))

если можно, покажите пример небольшой...

Заранее большое спасибо за подсказки и наводку

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 23.01.11 14:36
1. MouseMove
2. Form2.ForeColor, .Font
3. Создай такую форму. Исползуй класс Screen

Ответить

Номер ответа: 2
Автор ответа:
 QweЯty



Вопросов: 7
Ответов: 12
 Профиль | | #2 Добавлено: 24.01.11 00:13
по 1 и 2 спасибо,

по 3му..
добавить форму - а дальше что? поиск по screen ничего не дал:(

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 24.01.11 09:51
MSDN -> класс Screen
А форму отображай как " чтобы показывалось от трея вверх"

Ответить

Номер ответа: 4
Автор ответа:
 HIWORD



Вопросов: 0
Ответов: 14
 Профиль | | #4 Добавлено: 24.01.11 20:35
По первому способу я бы не благодарил.
Правильно было бы подмена WM_LBUTTONDOWN на WM_NCLBUTTONDOWN.
  1. Public Class Form1
  2.     Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
  3.         If m.Msg = WM_LBUTTONDOWN Then
  4.             m.Msg = WM_NCLBUTTONDOWN
  5.             m.WParam = HTCAPTION
  6.         End If
  7.         MyBase.WndProc(m)
  8.     End Sub
  9. ...
  10. ...

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 24.01.11 21:46
щас он скажет что у него WM_LBUTTONDOWN подчеркнуло красным и не компилится и выдает ашипку

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 24.01.11 21:47
Первый способ вот так делается:

http://www.codeproject.com/KB/cs/csharpmovewindow.aspx

и никакого сабклассинга или MouseMove

Ответить

Номер ответа: 7
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #7 Добавлено: 25.01.11 02:45
После непродолжительных обсуждений, экспертная группа в составе меня и Artyom пришла к выводу, что преложенные варианты #4 и #6 являются говнокодом (вариант #1 не рассматривался как ответ).
Вариант №4 по причине использования сабклассинга (читать-грязного хака) а вариант №6 по причине использования API.
В связи с вышеизложенными фактами экспертная группа предлагает использовать разработанный нами вариант решения
  1.  
  2.     public partial class Form1 : Form
  3.     {
  4.  
  5.         public Form1()
  6.         {
  7.             InitializeComponent();
  8.  
  9.             MouseDown += MoveWindow;
  10.             /* При необходимости так же подключаем дополнительные контролы за которые можно таскать форму */
  11.             //label1.MouseDown += MoveWindow;
  12.         }
  13.  
  14.         void MoveWindow(object sender, MouseEventArgs e)
  15.         {
  16.             const int WM_NCLBUTTONDOWN = 0xA1;
  17.             const int HT_CAPTION = 0x2;
  18.  
  19.             if (e.Button == MouseButtons.Left)
  20.             {
  21.                 ((Control)sender).Capture = false;
  22.                 Message msg = Message.Create(Handle, WM_NCLBUTTONDOWN, (IntPtr)HT_CAPTION, IntPtr.Zero);
  23.                 Invoke(new Action(() => WndProc(ref msg)));
  24.             }
  25.         }
  26.     }



Так же,для желающих, мы рекомендуем оформить этот метод в виде Extention метода

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 25.01.11 02:46
труъ

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 25.01.11 10:12
гж, че скажешь

Ответить

Номер ответа: 10
Автор ответа:
 Millenium



ICQ: 629966 

Вопросов: 118
Ответов: 903
 Web-сайт: www.aliyev.us
 Профиль | | #10
Добавлено: 01.02.11 16:26
Увожаемый QweЯty; зачем вы не смотрите раздел примеров? Ваши вопросы там уже существуют в готовом виде...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам