Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Dim1One
41 / 41 / 4
Регистрация: 30.04.2011
Сообщений: 276
#1

Как запретить двигать форму

27.07.2011, 21:42. Просмотров 2909. Ответов 21
Метки нет (Все метки)

Как запретить двигать форму?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2011, 21:42
Ответы с готовыми решениями:

Как запретить задвигать форму за края экрана?
Нужно запретить задвигать форму за край экрана. Вот я побывал для левой...

как запретить выход формы за другую форму?
создал две формы. при нажатии на кнопку появляется вторая форма. надо запретить...

Как запретить сортировку в DataGridView
использую vs2013 prof варез сортировка по клику на columnheaders открыл код,...

Как запретить нажатие клавиш?
Как запретить нажатие клавиш?

Как запретить убивать процесс
Как запретить убивать процесс программы (пример: Kaspersky):

21
Darth Coder
281 / 262 / 107
Регистрация: 10.06.2011
Сообщений: 696
28.07.2011, 00:27 #2
Можно убрать рамку
0
kOS_77
193 / 185 / 9
Регистрация: 14.06.2011
Сообщений: 495
28.07.2011, 01:03 #3
Я например знаю два способа, один наверное не подойдет, а вот другой еще более-менее но все равно по хорошему не годится


1.

Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None Только видон у формы будет не очень


2. При попытке сдвинуть форму она после сдвига на 3 пикселя(точно не помню на сколько) вернется в центр экрана, ну или куда захотите.
vb.net
1
2
3
Private Sub Form1_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Move
Me.CenterToScreen()
    End Sub
0
Памирыч
Почетный модератор
20867 / 8751 / 1080
Регистрация: 11.04.2010
Сообщений: 11,013
28.07.2011, 06:13 #4
Лучший ответ Сообщение было отмечено как решение

Решение

vb.net
1
2
3
4
5
6
7
8
Protected Overrides Sub WndProc(ByRef m As Message)
        Const WM_NCLBUTTONDOWN As Integer = 161
        Const WM_SYSCOMMAND As Integer = 274
        Const HTCAPTION As Integer = 2
        Const SC_MOVE As Integer = 61456
        If m.Msg = WM_NCLBUTTONDOWN And m.WParam.ToInt32() = HTCAPTION Then Return
        MyBase.WndProc(m)
    End Sub
5
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.07.2011, 17:38 #5
Памирыч, через альт + спейс все равно можно передвинуть
0
Памирыч
28.07.2011, 19:24
  #6

Не по теме:

eJ_Studio, я не сочинял этот код, а честно скоммуниздил и принес вам показать.
Поэтому как там запретить Альт-Спейс - :scratch:

0
kOS_77
193 / 185 / 9
Регистрация: 14.06.2011
Сообщений: 495
28.07.2011, 19:27 #7
может просто запретить над формой зажимать клавишу ?
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.07.2011, 19:28 #8
одну строчку добавить
а вместе будет так
vb.net
1
2
If m.Msg = WM_SYSCOMMAND And m.WParam.ToInt32() = SC_MOVE Then Return
If m.Msg = WM_NCLBUTTONDOWN And m.WParam.ToInt32() = HTCAPTION Then Return
0
Памирыч
Почетный модератор
20867 / 8751 / 1080
Регистрация: 11.04.2010
Сообщений: 11,013
28.07.2011, 19:39 #9
Не бейте по печени:
vb.net
1
2
3
4
    Protected Overrides Sub WndProc(ByRef m As Message)
        If m.Msg = 274 Then Return
        MyBase.WndProc(m)
    End Sub


Тут уже доизвращались до того что не закрыть ни свернуть нельзя
1
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.07.2011, 19:52 #10
Да, вариантов как говорится кучка
vb.net
1
2
    If m.Msg = &H112 Then Return
        MyBase.WndProc(m)
а как проверить равно ли это 274? то есть есть ли способ переворота шестнадц. на обычный вид?
0
Ciberst
507 / 420 / 19
Регистрация: 16.12.2010
Сообщений: 939
28.07.2011, 20:10 #11
vb.net
1
2
3
4
5
6
7
8
 Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        
        If m.Msg = 160 Or m.Msg = 675 Or m.Msg = 674 Or m.Msg = 70 Then
            '  Me.TopMost = True
            Cursor.Position = New Point(Me.Location.X + 30, Me.Location.Y + 30)
        End If
        MyBase.WndProc(m)
    End Sub
1
Treals
29 / 29 / 3
Регистрация: 25.05.2011
Сообщений: 308
28.07.2011, 20:14 #12
Ciberst, хороший прикол ))
0
kOS_77
193 / 185 / 9
Регистрация: 14.06.2011
Сообщений: 495
28.07.2011, 20:18 #13
Это уже не прикол, это готовый продукт! БАННЕР называется...
Отрубайте альт+Ф4
0
Ciberst
507 / 420 / 19
Регистрация: 16.12.2010
Сообщений: 939
28.07.2011, 20:44 #14
Цитата Сообщение от kOS_77 Посмотреть сообщение
Это уже не прикол, это готовый продукт! БАННЕР называется...
Отрубайте альт+Ф4

Не по теме:

ну, до банера ему еще далековато, и делать банеры не собирался:rofl:

0
Памирыч
Почетный модератор
20867 / 8751 / 1080
Регистрация: 11.04.2010
Сообщений: 11,013
28.07.2011, 20:46 #15
Ладно, ребята, на этом предлагаю закончить, если автор, конечно, удовлетворен ответами.
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.07.2011, 20:57 #16
Ciberst,
kOS_77,
Treals, и в чем прикол? в том что мышь в углу мечется? альт + спейс и все дела...не понял Вас господа хорошие...ТАк как понять 274 и &H112 одно и тоже или нет?
0
kOS_77
193 / 185 / 9
Регистрация: 14.06.2011
Сообщений: 495
28.07.2011, 21:29 #17
Я вот предлагаю повторно: надо отрубить над формой зажатие клавиши мыши. Т.е. при наступлении событии Mouse_down тут же наступает событие Mouse_UP.
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
28.07.2011, 21:39 #18
vb.net
1
2
Private Declare Function GetSystemMenu Lib "user32.dll" (ByVal hwnd As IntPtr, ByVal bRevert As Int32) As IntPtr
Private Declare Function DeleteMenu Lib "user32.dll" (ByVal hMenu As IntPtr, ByVal nPosition As Int32, ByVal wFlags As Int32) As Int32
vb.net
1
2
3
4
5
6
Dim hMenu As IntPtr = GetSystemMenu(Me.Handle, False)
If hMenu <> IntPtr.Zero Then
 
DeleteMenu(hMenu, SC_MOVE, MF_BYCOMMAND)
 
End If
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Enum WM_SYSCOMMAND As Integer
SC_CLOSE = &HF060I
SC_CONTEXTHELP = &HF180
SC_DEFAULT = &HF160
SC_HOTKEY = &HF150
SC_KEYMENU = &HF100
SC_MAXIMIZE = &HF030I
SC_MINIMIZE = &HF020I
SC_MONITORPOWER = &HF170
SC_MOUSEMENU = &HF090
SC_MOVE = &HF010
SC_NEXTWINDOW = &HF040
SC_PREVWINDOW = &HF050
SC_RESTORE = &HF120
SC_SCREENSAVE = &HF140
SC_SIZE = &HF000
SC_TASKLIST = &HF130
SC_VSCROLL = &HF070
End Enum
2
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As IntPtr, ByVal revert As Boolean) As Int32
Friend Declare Function RemoveMenu Lib "user32.dll" (ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As enmSelectMenuMethod) As Int32
 
 
<Flags()> _
Friend Enum APIBool As Integer
[TRUE] = 1
[FALSE] = 0
End Enum
 
Friend Enum enmSelectMenuMethod As Integer
MF_BYCOMMAND = &H0I
MF_BYPOSITION = &H400I
MF_GRAYED = &H1
MF_ENABLED = &H0
End Enum
 
Friend Enum SystemMenuItems As Int32
SC_CLOSE = &HF060I
SC_MOVE = &HF010
SC_MAXIMIZE = &HF030I
SC_MINIMIZE = &HF020I
SC_SIZE = &HF000
SC_RESTORE = &HF120
SC_SEPARATOR = 0 '&H800
End Enum
vb.net
1
2
3
4
5
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
RemoveMenu(GetSystemMenu(Me.Handle, APIBool.FALSE), SystemMenuItems.SC_MOVE, enmSelectMenuMethod.MF_BYCOMMAND)
 
End Sub
2
Ciberst
507 / 420 / 19
Регистрация: 16.12.2010
Сообщений: 939
29.07.2011, 01:48 #19
274 и &H112 - одно и тоже
274 в 10ричной системе счисления (сс) = 112 в 16ричной сс
&H - метка , обозначающая 16ричную сс
0
eJ_Studio
167 / 147 / 14
Регистрация: 13.07.2011
Сообщений: 477
29.07.2011, 15:18 #20
Цитата Сообщение от Ciberst Посмотреть сообщение
&H - метка , обозначающая 16ричную сс
Да ладно?О_о а если серьезно то я в курсе
Я имелл ввиду систему перевода с шестнадцатиричной в обычную и обратно!
0
29.07.2011, 15:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2011, 15:18

Как запретить растягивание окна
Как в готовом приложение запретить растягивать размер окна-чтобы он был...

Как запретить нажатие клавиши Alt?
Возможно мое оформление вопроса покажется странным. Я недавно зарегистрировался...

Как запретить множественный выбор в CheckedListBox
Здравствуйте! Подскажите пожалуйста почему при CheckedListBox1.SelectionMode =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru