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

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

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

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

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

Заранее большое спасибо.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2014, 20:54
Ответы с готовыми решениями:

Есть ли какая нибудь команда или программа, которая замедляет процесс в командной строке?
Есть ли какая нибудь команда или программа, которая замедляет процесс в...

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

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

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

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

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
2561 / 2108 / 519
Регистрация: 02.02.2013
Сообщений: 1,980
Записей в блоге: 2
14.11.2014, 15:25 4
В любом случае придется писать код. Готовый Control не встречал.
Простейший вариант: при нажатии на кнопку справа открывается дополнительный блок формы, при повторном нажатии – блок убирается. При желании можно добавить чуточку анимации.
1
Миниатюры
Если ли какая-нибудь форма или панель, которая будет плавно выкатываться из основной  
vova2112
114 / 106 / 30
Регистрация: 28.02.2014
Сообщений: 131
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
114 / 106 / 30
Регистрация: 28.02.2014
Сообщений: 131
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
114 / 106 / 30
Регистрация: 28.02.2014
Сообщений: 131
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
114 / 106 / 30
Регистрация: 28.02.2014
Сообщений: 131
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
2561 / 2108 / 519
Регистрация: 02.02.2013
Сообщений: 1,980
Записей в блоге: 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
2561 / 2108 / 519
Регистрация: 02.02.2013
Сообщений: 1,980
Записей в блоге: 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
2561 / 2108 / 519
Регистрация: 02.02.2013
Сообщений: 1,980
Записей в блоге: 2
15.11.2014, 15:30 18
На форме размещаем FlowLayoutPanel (Dock=Fill) .
Добавляем три панели нужных размеров (R,C,L) и кнопки (R,L).
Как это выглядит на стадии разработки показано на рисунке.
Поясняю: на форме одна FlowLayoutPanel и уже в ней размещаются три обычные панели.
1
ovva
2561 / 2108 / 519
Регистрация: 02.02.2013
Сообщений: 1,980
Записей в блоге: 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

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

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

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


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

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

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