Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/145: Рейтинг темы: голосов - 145, средняя оценка - 4.59
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 102
1

Использование MsgBox с кнопками "Да" и "Нет"

04.01.2014, 19:31. Показов 26335. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго всем времени суток!
Пишу игрушку и не могу понять, как задать функции для кнопок которые открываются в MsgBox.
Например: при нажатии кнопки выход идет проверка условия была ли нажата кнопка сохранения, если да то игра закрывается, если нет то вылетает сообщение с тремя кнопками "да, нет, отмена". Мне необходимо чтобы при нажатии кнопки "Да" - игра закрывалась, "Нет" - закрывалось сообщение, и третью кнопку необходимо переименовать в "Сохранить и выйти" - где происходить запись результата и игра закрывается
код кнопки
VB.NET
1
2
3
4
5
6
7
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If l > 0 Then
            End
        ElseIf MsgBox("Вы действительно хотите выйти не сохранив результаты?", MsgBoxStyle.YesNoCancel) Then
        
        End If
    End Sub

код записи
VB.NET
1
2
3
4
5
6
7
 l = l + 1
        Dim result As StreamWriter
        Dim save As New System.IO.StreamWriter("D:\1.txt", True)
        save.Write(imya)
        save.Write(" ")
        save.Write(cash & vbCrLf)
        save.Close()
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2014, 19:31
Ответы с готовыми решениями:

Как вызвать что-то типа MsgBox-а с кнопками "Да" и "Нет" ?
И чтоб при нажатии на 'Да' переходила на указанную ссылку, а при нажатии на 'Нет' ничего не...

Как выводить msgbox с кнопками "да" и "нет"?
Как выводить msgbox с кнопачками да нет? Добавлено через 54 минуты Сам разобрался. if...

Ошибка The type or namespace name 'MsgBox' does not exist in the class or namespace 'MsgBox.MsgBox' (are you missing an assembly reference?)
Есть Class Library, написанная на VB.NET. Компилирую, вставляю assembly в VB.NET, все работает....

Использование MsgBox в цикле
Всем привет! У меня есть такой код, представленный ниже. Он копирует строки из одного файла в...

Использование InputBox и MsgBox
Здорово, что есть такие форумы, где умные люди делятся своими идеями и соображениями с другими...

17
1245 / 1055 / 293
Регистрация: 07.03.2012
Сообщений: 3,245
04.01.2014, 19:37 2
MsgBox это функция, которая возвращает там что-то (MsgBoxResultEnum по-моему). Вам надо проверить его
VB.NET
1
ElseIf MsgBox("Вы действительно хотите выйти не сохранив результаты?", MsgBoxStyle.YesNoCancel)= Then
равно подставьте как у меня, студия по идее вам должна предложить верный вариант автокомплитом
1
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 102
04.01.2014, 19:48  [ТС] 3
спасибо большое)
0
207 / 224 / 87
Регистрация: 21.04.2013
Сообщений: 404
04.01.2014, 21:26 4
Цитата Сообщение от ttt_xx Посмотреть сообщение
Пишу игрушку и не могу понять, как задать функции для кнопок которые открываются в MsgBox.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
        Dim dr As DialogResult = MsgBox("Вопрос", _
                                        MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, _
                                        "Заголовок")
 
        Select Case dr
            Case DialogResult.Yes
 
            Case DialogResult.No
 
            Case DialogResult.Cancel
 
        End Select
Цитата Сообщение от ttt_xx Посмотреть сообщение
третью кнопку необходимо переименовать в "Сохранить и выйти"
Такой возможности, по-моему, нет. Можно создать свою форму с тремя кнопками. Открывать ее CustomMsgBox.
ShowDialog(). Для получения значений в коде кнопок своей диалоговой формы писать что-то типа:
VB.NET
1
2
DialogResult = vbOK
        Me.Close()
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
04.01.2014, 21:41 5
VB.NET
1
2
3
4
5
6
Dim mess = MsgBox("Текст", 32 + 4, "Заголовок") 'значения цифр прилагаю
If mess = DialogResult.Yes then
  'code
Else
  'code
End if
Цитата Сообщение от Petr_S Посмотреть сообщение
Такой возможности, по-моему, нет.
Да, я тоже о такой не слышал...

P.S.: Изображение предоставлено пользователем emenem97.
Миниатюры
Использование MsgBox с кнопками "Да" и "Нет"  
3
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
04.01.2014, 22:33 6
Я думаю, если есть надобность в собственном мессадже, то можно вот так сделать.
Основная форма:
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
Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim MyMsg As New MyMsgBox
        With MyMsg
            .FormBorderStyle = Windows.Forms.FormBorderStyle.FixedSingle
            .MaximizeBox = False
            .MinimizeBox = False
            .Button1.Text = "Yes"
            .Button2.Text = "No"
            .Button3.Text = "Save"
        End With
        MyMsg.ShowDialog()
        If MyMsg.Click_Data = 1 Then
            'Вариант 1
            MsgBox("Вариант действий 1")
        ElseIf MyMsg.Click_Data = 2 Then
            'Вариант 2
            MsgBox("Вариант действий 2")
        Else
            'Вариант 3
            MsgBox("Вариант действий 3")
        End If
    End Sub
End Class
Форма для своего мессаджа:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Class MyMsgBox
    Private MsgRes As String = Nothing
    Private Sub All_Click(sender As Object, e As System.EventArgs) Handles Button1.Click,
                                                                           Button2.Click, Button3.Click
        MsgRes = CType(sender, Button).Name
        Me.Close()
    End Sub
    Public ReadOnly Property Click_Data() As Integer
        Get
            If MsgRes = "Button1" Then
                Return 1
            ElseIf MsgRes = "Button2" Then
                Return 2
            Else
                Return 3
            End If
        End Get
    End Property
End Class
По возвращаемому свойству из формы мессаджа и прописывайте необходимые действия.
1
207 / 224 / 87
Регистрация: 21.04.2013
Сообщений: 404
04.01.2014, 23:02 7
Цитата Сообщение от Nachrichter Посмотреть сообщение
VB.NET
1
Dim mess = MsgBox("Текст", 32 + 4, "Заголовок") 'значения цифр прилагаю
Вместо "32 + 4" и других сочетаний удобнее писать vb-константы с Or.
Например, vbOKCancel Or vbExclamation выдаст запрос с двумя кнопками ("ОК" и "Отмена") и значком "Восклицательный знак в желтом треугольнике".
1
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
04.01.2014, 23:24 8
Цитата Сообщение от Petr_S Посмотреть сообщение
удобнее писать vb-константы с Or
О вкусах предпочитаю не спорить.
0
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 102
05.01.2014, 08:04  [ТС] 9
Спасибр всем за помощь, сделал вот таким образом. Но тут есть вопрос: когда я нажимаю на кнопку "Нет" прога записывает результат, но не закрывается, и тут же снова вылетает такой же msgbox и тут при повторном нажатии кнопки "Нет" снова все записывается и прога закрывается, а должно закрываться после первого нажатия. И при нажатии кнопки отмена тоже самое, должна закрываться с первого клика, а не со второго, что тут не так?
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If l > 0 Then
            End
        ElseIf MsgBox("Вы действительно хотите выйти не сохранив результаты?", MsgBoxStyle.YesNoCancel, "Выход") = MsgBoxResult.Yes Then
            End
        ElseIf MsgBox("Вы действительно хотите выйти не сохранив результаты?", MsgBoxStyle.YesNoCancel, "Выход") = MsgBoxResult.No Then
            l = l + 1
            Dim result As StreamWriter
            Dim save As New System.IO.StreamWriter("D:\1.txt", True)
            save.Write(imya)
            save.Write(" ")
            save.Write(cash & vbCrLf)
            save.Close()
            End
        Else : Exit Sub
        End If
    End Sub
0
Заблокирован
05.01.2014, 11:31 10
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 If l > 0 Then
            End
        Else
            Dim MessageB As DialogResult = MessageBox.Show("Вы действительно хотите выйти не сохранив результаты?", "Выход", MessageBoxButtons.YesNoCancel)
            If MessageB = DialogResult.Yes Then End
            If MessageB = DialogResult.No Then
                l = l + 1
                Dim result As StreamWriter
                Dim save As New System.IO.StreamWriter("D:\1.txt", True)
                save.Write(imya)
                save.Write(" ")
                save.Write(cash & vbCrLf)
                save.Close()
                End
            End If
            If MessageB = DialogResult.Cancel Then Exit Sub
        End If
Добавлено через 2 минуты
Цитата Сообщение от ttt_xx Посмотреть сообщение
И при нажатии кнопки отмена тоже самое, должна закрываться с первого клика, а не со второго, что тут не так?
ну так ты погляди на код внимательней. у тебя
Цитата Сообщение от ttt_xx Посмотреть сообщение
ElseIf MsgBox("Вы действительно хотите выйти не сохранив результаты?", MsgBoxStyle.YesNoCancel, "Выход") = MsgBoxResult.Yes Then
и
Цитата Сообщение от ttt_xx Посмотреть сообщение
ElseIf MsgBox("Вы действительно хотите выйти не сохранив результаты?", MsgBoxStyle.YesNoCancel, "Выход") = MsgBoxResult.No Then
0
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 102
05.01.2014, 12:16  [ТС] 11
Цитата Сообщение от Release Посмотреть сообщение
ну так ты погляди на код внимательней
а что тут не так? вроде все правильно.
Идет проверка какая кнопка была нажата
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
05.01.2014, 12:34 12
А чем Вам вариант с двумя формами не подошел? Названия кнопок ставьте какие надо, и все работает как и требовалось...
0
Заблокирован
05.01.2014, 12:53 13
Цитата Сообщение от ttt_xx Посмотреть сообщение
Идет проверка какая кнопка была нажата
дак перед проверкой она вызывает MsgBox. По этому у вас два раза показывается сообщение.
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
09.01.2014, 15:07 14
Цитата Сообщение от ttt_xx Посмотреть сообщение
и третью кнопку необходимо переименовать в "Сохранить и выйти"
Надо копать в сторону WinApi и нативного показа диалога. Примерно туда же, где присобачивается таймер обратного отсчёта. По крайней мере, мне так кажется. Не пробовал так делать.
Кстати, а с шириной кнопок тогда что?
0
Заблокирован
09.01.2014, 15:32 15
Цитата Сообщение от Qwertiy Посмотреть сообщение
Надо копать в сторону WinApi и нативного показа диалога. Примерно туда же, где присобачивается таймер обратного отсчёта.
Мудрено больно, проще уж свой сделать.
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
09.01.2014, 15:40 16
Цитата Сообщение от Release Посмотреть сообщение
Мудрено больно, проще уж свой сделать.
Мне кажется, проще оставить кнопку Отмена с естественной функциональностью
0
178 / 153 / 10
Регистрация: 08.11.2012
Сообщений: 224
09.01.2014, 17:51 17
Цитата Сообщение от ttt_xx Посмотреть сообщение
третью кнопку необходимо переименовать в "Сохранить и выйти"
VDialog по всем вопросам.
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
09.01.2014, 18:12 18
а я бы сделал ДВА msgbox'а. первый стандартный: "выйти? да/нет. Второй после нажатия Да (Выход) выскакивает предложение msgbox: "Сохранить? Да/Нет" . И не нужно ничего городить
0
09.01.2014, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2014, 18:12
Помогаю со студенческими работами здесь

Использование функций InputBox и MsgBox
Помогите, пожалуйста с задачей по информационным технологиям. Не могу найти ошибку в программе. ...

Использование MsgBox в цикле - VBA
Всем привет! У меня есть такой код, представленный ниже. У меня переменная D будет зависеть от...

нет сообщения в MsgBox$
пошагово прохожу строку MsgBox$ ActiveDocument.Tables(cursor_table).Rows(w).Cells.Count & "<>" &...

Использование msgbox / inputbox при работе с массивами
Задание: Исходные данные (размеры матриц и значения элементов матриц) вводятся с помощью...

Вычислить выражение по формуле и вывести в MsgBox c использование библиотеки masm32
Вот задание: 2/a+b*sqrt(cd) Числа произвольные (я принимаю c=d=3, b=2, a=5). При этом результат...

Получить в msgbox кнопки Да (vbYes) Нет (vbNo) и Показать
Доброго времени суток.. Возник у меня такой вопрос В msgbox у меня есть необходимость получить...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru