Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
#1

Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной - Visual Basic .NET

13.11.2014, 20:54. Просмотров 1358. Ответов 21
Метки нет (Все метки)

Доброе время суток.
Скажите, пожалуйста, если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной формы?

А именно при нажатии на кнопку влево или вправо будет, выкатывается панель, которая прикреплена к главной форме (пользователь не сможет отодвинуть эту панель в сторону).

Заранее большое спасибо.
http://www.cyberforum.ru/windows7/thread2003485.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2014, 20:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной (Visual Basic .NET):

Добавить форму, которая запускается вперед основной(форма входа)
Здравствуйте. Есть проект, в которую нужно добавить форму входа, которая как...

Кто нибудь знает какая частота шины/памяти будет на 9сериях GeForce?
Кто нибудь знает какая частота шины/памяти будет на 9сериях GeForce??Какой...

Указать, какая форма проекта будет загружена первой
У меня в проекте есть 3 формы Одна с них должа "вызывать" осталтние Как...

Есть какая-нибудь книжка по JavaScript-у, которая дает основы?
Всем привет, недавно захотел попробовать себя в фронтэнд-разработки (вообще, я...

Есть ли какая-нибудь команда, которая находит минимальное число в массиве?
А то очень сложно сравнивать 100 элементов в ручную Или команда, которая...

21
Серж_87
1293 / 499 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
13.11.2014, 21:04 #2
Цитата Сообщение от loner63 Посмотреть сообщение
если ли какая-нибудь форма или панел
не слышал о такой. Самому писать
0
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
14.11.2014, 00:03  [ТС] #3
Цитата Сообщение от emenem97 Посмотреть сообщение
не слышал о такой. Самому писать
Знал бы я как это делается))))
0
ovva
2199 / 1903 / 470
Регистрация: 02.02.2013
Сообщений: 1,779
Записей в блоге: 2
14.11.2014, 15:25 #4
В любом случае придется писать код. Готовый Control не встречал.
Простейший вариант: при нажатии на кнопку справа открывается дополнительный блок формы, при повторном нажатии – блок убирается. При желании можно добавить чуточку анимации.
1
Миниатюры
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной  
vova2112
113 / 105 / 30
Регистрация: 28.02.2014
Сообщений: 125
14.11.2014, 16:09 #5
Можно сделать примерно так:
Кидаем на форму Panel1 и Panel2, у Panel1 выставляем Dosk = Left, у Panel2 выставляем Dosk = Fill. Размещаем на Panel1 Всё что нужно(я создал RichTextBox1 и TextBox1), ставим в опциях Panel1 "Size" первым значением "1" (второе задаётся автоматом)
Размещаем на Panel2 кнопку и ставим такой код:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Private w As Boolean = False
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim i% = 0
        If Not w Then
            RichTextBox1.Visible = False
            TextBox1.Visible = False
            Do While i <> 280
                i += 1
                Panel1.Width += 1
                Me.Width += 1
            Loop
            TextBox1.Visible = True
            RichTextBox1.Visible = True
            w = True
        Else
            Panel1.Width = 1
            Me.Width -= 280
            w = False
        End If
    End Sub
0
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
14.11.2014, 17:30  [ТС] #6
Цитата Сообщение от ovva Посмотреть сообщение
В любом случае придется писать код. Готовый Control не встречал.
Простейший вариант: при нажатии на кнопку справа открывается дополнительный блок формы, при повторном нажатии – блок убирается. При желании можно добавить чуточку анимации.
Вот это мне и нужно. Вы не могли бы объяснить как это сделать?

Добавлено через 15 минут
Цитата Сообщение от vova2112 Посмотреть сообщение
Можно сделать примерно так:
Кидаем на форму Panel1 и Panel2, у Panel1 выставляем Dosk = Left, у Panel2 выставляем Dosk = Fill. Размещаем на Panel1 Всё что нужно(я создал RichTextBox1 и TextBox1), ставим в опциях Panel1 "Size" первым значением "1" (второе задаётся автоматом)
Размещаем на Panel2 кнопку и ставим такой код:
Может я чего и не понел но сделал как описано в итоге да панель выдвигается но по чему то в центре формы. А нужно что бы панель выдвигалась влево
0
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
14.11.2014, 18:26  [ТС] #7
Ребята помогите пожалуйста.

При загрузке формы должно быть так:
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной

При нажатии на кнопку (что находится с левой стороне формы) выкатывается панель с размещенными на ней заранее элементами:
(так же при повторном нажатии панель закрывалась получается все как на 1-ой картинке )
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной

При нажатии на кнопку (что находится в правой стороне формы) выкатывается панель с размещенными на ней заранее элементами:
(так же при повторном нажатии панель закрывалась получается все как на 1-ой картинке )
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной

Заранее большое спасибо)))
0
vova2112
113 / 105 / 30
Регистрация: 28.02.2014
Сообщений: 125
14.11.2014, 19:37 #8
Как вариант:
Всё как я писал прежде только теперь 3 панели, 2 по бокам(Panel1,Panel2), и одна по середине(Panel3) с Dosk = Fill
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
27
28
29
    Private w1 As Boolean = False
    Private w2 As Boolean = False
 
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Not w1 Then
            Me.Left -= 280
            Panel1.Width = 280
            Me.Width += 280
            w1 = True
        Else
            Panel1.Width = 1
            Me.Width -= 280
            Me.Left += 280
            w1 = False
        End If
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If Not w2 Then
            Panel2.Width = 280
            Me.Width += 280
            w2 = True
        Else
            Panel2.Width = 1
            Me.Width -= 280
            w2 = False
        End If
    End Sub
Button1 - левая кнопка, Button2 - правая
1
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
14.11.2014, 19:59  [ТС] #9
Цитата Сообщение от vova2112 Посмотреть сообщение
Как вариант:
Всё как я писал прежде только теперь 3 панели, 2 по бокам(Panel1,Panel2), и одна по середине(Panel3) с Dosk = Fill
Я сделал все как вы сказали и получилось вот что
загрузка приложения
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной
после нажатия на левую кнопку (заметим что панель с лева не выкатилась но справа форма растянулась )
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной
еще раз нажал на левую кнопку потом сразу нажал на правую кнопку
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной
0
vova2112
113 / 105 / 30
Регистрация: 28.02.2014
Сообщений: 125
14.11.2014, 20:14 #10
Проверь всё ли у тебя верно - у Panel1 Dosk = Left, а у Panel2 Dosk = Right, на Panel3 2-е кнопки для развёртывания панелей. В событии для левой кнопки указываем Panel1, и Panel2 в событии правой.
0
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
14.11.2014, 20:28  [ТС] #11
Цитата Сообщение от vova2112 Посмотреть сообщение
Проверь всё ли у тебя верно - у Panel1 Dosk = Left, а у Panel2 Dosk = Right, на Panel3 2-е кнопки для развёртывания панелей. В событии для левой кнопки указываем Panel1, и Panel2 в событии правой.
Да все правильно
код ваш :
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
27
28
29
Public Class Form1
    Private w1 As Boolean = False
    Private w2 As Boolean = False
 
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        If Not w1 Then
            Me.Left -= 280
            Panel1.Width = 280
            Me.Width += 280
            w1 = True
        Else
            Panel1.Width = 1
            Me.Width -= 280
            Me.Left += 280
            w1 = False
        End If
    End Sub
    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
        If Not w2 Then
            Panel2.Width = 280
            Me.Width += 280
            w2 = True
        Else
            Panel2.Width = 1
            Me.Width -= 280
            w2 = False
        End If
    End Sub
End Class
А вы сами проверяли на своём ПК или вы просто машинально код написали?
0
vova2112
113 / 105 / 30
Регистрация: 28.02.2014
Сообщений: 125
14.11.2014, 20:39 #12
Ну вот проект:
0
Вложения
Тип файла: zip WindowsApplication2.zip (96.7 Кб, 45 просмотров)
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
14.11.2014, 20:47  [ТС] #13
У меня получилось открыть программу только в exe файле и на самом деле у вас работает все.
но к сожалению открыть проект через vb не получается пишит что он был создан в более раней версии

Добавлено через 2 минуты
Очень стало интересно почему так получается??
Что у меня на столько руки растут не от того места что не могу скопировать код и вставить правильно ((((((
0
ovva
2199 / 1903 / 470
Регистрация: 02.02.2013
Сообщений: 1,779
Записей в блоге: 2
15.11.2014, 00:23 #14
Еще один вариант кода. Идея та же. На мой взгляд, его проще обслуживать.
Форма: FormBorderStyle=FixedSingle
На форме размещаем FlowLayoutPanel (Dock=Fill) .
Добавляем три панели нужных размеров (R,C,L) и кнопки (R,L).
Как это выглядит на стадии разработки показано на рисунке.
Ну и код:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
Private isOpenL, isOpenR As Boolean
Private WR, WL, WC As Integer
Private dd As Integer = 24
Private Sub Form5_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Me.MaximizeBox = False
    Me.MinimizeBox = False
    WR = PanelR.Width
    WL = PanelL.Width
    WC = PanelC.Width
    PanelL.Width = 0
    PanelR.Width = 0
    Me.Width = WC + dd
    isOpenR = True
    isOpenL = True
End Sub
 
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles ButtonR.Click
    If isOpenR Then
        ButtonR.Text = "<"
        PanelR.Width = WR
    Else
        ButtonR.Text = ">"
        PanelR.Width = 0
    End If
    Me.Width = PanelL.Width + PanelR.Width + PanelC.Width + dd
    isOpenR = Not isOpenR
End Sub
 
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles ButtonL.Click
    If isOpenL Then
        ButtonL.Text = ">"
        PanelL.Width = WL
    Else
        ButtonL.Text = "<"
        PanelL.Width = 0
    End If
    Me.Width = PanelL.Width + PanelR.Width + PanelC.Width + dd
    isOpenL = Not isOpenL
End Sub
0
Миниатюры
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной  
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
15.11.2014, 12:27  [ТС] #15
И вот что получилось:
Форма загрузки:
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной
После нажатия на ButtonR (после второго нажатия он просто увеличивает форму с другой стороны а не с той где должно было быть)
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной
Только ButtonL хорошо работает (не смотря что при загрузке формы ButtonL вообще не видно )
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной
0
ovva
2199 / 1903 / 470
Регистрация: 02.02.2013
Сообщений: 1,779
Записей в блоге: 2
15.11.2014, 12:52 #16
Странно. Если можно выложите свой проект.
0
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
15.11.2014, 15:08  [ТС] #17
Да можно))
WindowsApplication1.rar
0
ovva
2199 / 1903 / 470
Регистрация: 02.02.2013
Сообщений: 1,779
Записей в блоге: 2
15.11.2014, 15:30 #18
На форме размещаем FlowLayoutPanel (Dock=Fill) .
Добавляем три панели нужных размеров (R,C,L) и кнопки (R,L).
Как это выглядит на стадии разработки показано на рисунке.
Поясняю: на форме одна FlowLayoutPanel и уже в ней размещаются три обычные панели.
1
ovva
2199 / 1903 / 470
Регистрация: 02.02.2013
Сообщений: 1,779
Записей в блоге: 2
15.11.2014, 15:42 #19
Лучший ответ Сообщение было отмечено loner63 как решение

Решение

Прилагаю проект
1
Вложения
Тип файла: zip tst1.zip (65.4 Кб, 37 просмотров)
loner63
1 / 1 / 1
Регистрация: 22.07.2014
Сообщений: 66
15.11.2014, 15:50  [ТС] #20
ах вот оно что видно я как всегда не так понел вас)))
Спасибо большое за полное разъяснение)))
0
15.11.2014, 15:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2014, 15:50
Привет! Вот еще темы с решениями:

Сообщать об ошибке, если какая-нибудь из директорий, в которые копируется файл, не существует
Есть батник, кодирующий файлы , как написать исключение в нём, чтоб он выдавал...

Определить, какая площадь и квадратных метрах будет покрашена и какая будет побелена
Длина класса L метров, ширина - b метров, высота класса – h метров. В классе...

Как скрыть панель задач, если форма раскрывается в размер монитора
Подскажите пожалуйста,как сделать так, чтобы во время открытия формы визуал...

Как можно сделать форму, которая будет перекрывать панель задач?
Здравствуйте. Подскажите пожалуйста как можно сделать форму которая будет...


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

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

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