Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/1837: Рейтинг темы: голосов - 1837, средняя оценка - 4.78
Памирыч
Почетный модератор
21147 / 8876 / 1080
Регистрация: 11.04.2010
Сообщений: 11,012
1

Visual Basic .NET FAQ. Готовые решения, полезные коды

18.08.2011, 22:44. Просмотров 331724. Ответов 210
Метки faq (Все метки)

Предлагаю в этой теме размещать ответы на часто задаваемые вопросы и просто делиться полезными кодами.
Обращаю внимание на некоторые моменты, которые являются дополнением к основным правилам
  1. Запрещается копировать материалы с других сайтов или форумов
  2. Решения должны быть написаны с использованием языка Visual Basic .NET
  3. Запрещено создавать посты с уточнениями и замечаниями. Такие вопросы задавайте на форуме
  4. Код, в котором присутствуют комментарии, читается и понимается намного легче и быстрее
  5. Длинные коды и объемные вопросы одного содержания заключайте в теги [SPОILER]Большой код[/SPОILER]
  6. При создании поста убедитесь, что этот вопрос не был освещен ранее
  7. Код должен быть написан грамотно, большие и неэффективные коды будут удаляться
  8. Список вопросов по конкретной теме нельзя "разрывать" на 2 и более поста

Просьба к постившим: не спешите постить решения "сгоряча", тщательно обдумайте список вопросов, их тематику и порядок
Если вы найдете информацию, которой можно было бы дополнить ваши предыдущие сообщения, что-то изменить или перегруппировать, пишите в л/с.

 Комментарий модератора 
Данные правила обязательны к исполнению в рамках темы


Примечание: некоторые коды приведены без учета строгой типизации (Параметр Strict), поэтому для их использования необходимо выполнить приведение типов
52
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2011, 22:44
Ответы с готовыми решениями:

Visual Basic .Net и Visual Basic 6.0 - В чём разница
В общем возник вопрос: Visual Bisic.Net и Visual Basic - это два разных языка, или же .NET версия...

Visual Basic.Net и Visual Studio 2013 - в чем разница?
Visual Basic.Net и Visual Studio 2013 - в чем разница? Или это одно и тоже, просто называются по...

Visual Basic .NET vs Visual FoxPro 9.0 в рамках задач реляционной модели данных
Очень хочется обсудить следующую тему. Поставлена задача - написать некоторую программу...

Арктангенс в Visual Basic .NET?
Здравствуйте всем! Как? Как его получить? В классе Math его нет......

Исходники на Visual Basic .NET
Кто-то читает книжки. Кто-то ищет информацию в Google... А кто-то набирается знаний, разбирая чужие...

210
Yury Komar
Модератор
Эксперт .NET
2891 / 2627 / 416
Регистрация: 27.01.2014
Сообщений: 4,791
11.05.2019, 04:59 201
Круговой ProgressBar (Circle ProgressBar)

На просторах нашел код отрисовки кругового прогресс бара.
С ним можно сделать отображение прогресса более современным.

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
Private Sub DrawProgress(g As Graphics, rect As Rectangle, percentage As Single)
    'work out the angles for each arc
    Dim progressAngle = CSng(360 / 100 * percentage)
    Dim remainderAngle = 360 - progressAngle
 
    'create pens to use for the arcs
    Using progressPen As New Pen(Color.LightSeaGreen, 2), remainderPen As New Pen(Color.LightGray, 2)
        'set the smoothing to high quality for better output
        g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
        'draw the blue and white arcs
        g.DrawArc(progressPen, rect, -90, progressAngle)
        g.DrawArc(remainderPen, rect, progressAngle - 90, remainderAngle)
    End Using
 
    'draw the text in the centre by working out how big it is and adjusting the co-ordinates accordingly
    Using fnt As New Font(Me.Font.FontFamily, 14)
        Dim text As String = percentage.ToString + "%"
        Dim textSize = g.MeasureString(text, fnt)
        Dim textPoint As New Point(CInt(rect.Left + (rect.Width / 2) - (textSize.Width / 2)), CInt(rect.Top + (rect.Height / 2) - (textSize.Height / 2)))
        'now we have all the values draw the text
        g.DrawString(text, fnt, Brushes.Black, textPoint)
    End Using
End Sub

Использование
vb.net
1
2
3
4
5
Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    DrawProgress(e.Graphics, New Rectangle(5, 5, 60, 60), 40)
    DrawProgress(e.Graphics, New Rectangle(80, 5, 60, 60), 80)
    DrawProgress(e.Graphics, New Rectangle(155, 5, 60, 60), 57)
End Sub
10
Изображения
Тип файла: png tSthu.png (3.9 Кб, 427 просмотров)
Yury Komar
Модератор
Эксперт .NET
2891 / 2627 / 416
Регистрация: 27.01.2014
Сообщений: 4,791
22.05.2019, 15:36 202
Получить интервал времени между двумя датами в формате Дней\Месяцев\Лет

Нестандартный способ получения интервала времени между двумя датами в формате Д\М\Г.
(стандартными методами можно получить только общее число дней, месяцев или лет)

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 Function GetDateSpanText(fromDate As DateTime, Optional toDate As DateTime = Nothing) As String
        Try
            Dim years As Integer = 0, months As Integer = 0, days As Integer = 0
            If toDate = Nothing Then toDate = DateTime.Now
 
            Do Until toDate.AddYears(-1) < fromDate
                years += 1
                toDate = toDate.AddYears(-1)
            Loop
 
            Do Until toDate.AddMonths(-1) < fromDate
                months += 1
                toDate = toDate.AddMonths(-1)
            Loop
 
            Do Until toDate.AddDays(-1) < fromDate
                days += 1
                toDate = toDate.AddDays(-1)
            Loop
 
            Return String.Format("{0} дн. {1} мес. {2} г.", days, months, years)
        Catch ex As Exception
            Return "Error"
        End Try
    End Function
7
Yury Komar
Модератор
Эксперт .NET
2891 / 2627 / 416
Регистрация: 27.01.2014
Сообщений: 4,791
22.05.2019, 16:58 203
Изменить размеры изображения сохраняя оригинальное соотношение сторон
(Resize Image keeping aspect ratio)

Особенности: Задавая только лишь одну величину (Ширину или Высоту) функция вернет изображение с новыми размерами, сохраняя оригинальное соотношение сторон. Задав оба значения (ширину И высоту) - вернется изображение с заданными размерами.

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Public Function ResizeKeepAspectRatio(OriginalImage As Bitmap, NewWidth As Integer, NewHeight As Integer) As Bitmap
        If NewWidth = Nothing And NewHeight = Nothing Then
            MsgBox("Either Width or Height must be greater than zero.")
            Return OriginalImage
        End If
 
        Dim tWidth As Integer = NewWidth
        Dim tHeight As Integer = NewHeight
 
        If tWidth > 0 Then
            If tHeight <= 0 Then tHeight = tWidth * (OriginalImage.Height / OriginalImage.Width)
        Else
            If tHeight > 0 Then tWidth = tHeight * (OriginalImage.Width / OriginalImage.Height)
        End If
 
        Dim bmp As New Bitmap(tWidth, tHeight)
        Using g = Graphics.FromImage(bmp)
            g.DrawImage(OriginalImage, 0, 0, tWidth, tHeight)
        End Using
        Return bmp
    End Function

Примеры использования:
vb.net
1
2
3
4
5
6
'Задать только ширину, высота высчитается сама
Dim NewImage As Bitmap = ResizeKeepAspectRatio(OriginalImg, 1024, 0)
'Задать только высоту, ширина высчитается сама
Dim NewImage As Bitmap = ResizeKeepAspectRatio(OriginalImg, 0, 768)
'Явно задать новую ширину И высоту
Dim NewImage As Bitmap = ResizeKeepAspectRatio(OriginalImg, 1024, 768)
3
Изображения
Тип файла: gif GIFKA 1.gif (877.1 Кб, 32 просмотров)
Вложения
Тип файла: zip Тестовы проект.zip (11.2 Кб, 14 просмотров)
greg zakharov
Покинул форум
2345 / 986 / 279
Регистрация: 07.05.2015
Сообщений: 1,971
24.05.2019, 20:47 204
Еще один альтернативный способ узнать является ли система 64-х битной
vb.net
1
2
3
4
5
6
7
Imports System.Runtime.InteropServices
 
Module OSBitness
  Sub Main
    Console.WriteLine(If (9 = Marshal.ReadInt16(CType(&H7FFE026A, IntPtr)), "64-bit", "32-bit"))
  End Sub
End Module
5
24.05.2019, 20:47
greg zakharov
Покинул форум
2345 / 986 / 279
Регистрация: 07.05.2015
Сообщений: 1,971
05.06.2019, 09:49 205
Время последнего входя в систему текущего пользователя

Каждый раз при входе в систему в реестре для текущего пользователя пере(записывается|создается) ключ "Volatile Environment"; считывая метку LastWriteTime этого ключа, можем узнать время последнего входа в систему с погрешностью от трех до десяти секунд.
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
Imports Microsoft.Win32
Imports System.Reflection
 
Module LogonTime
  Sub Main
    Using rk As RegistryKey = Registry.CurrentUser.OpenSubKey("Volatile Environment")
      If rk Is Nothing Then
        Console.WriteLine("Переменные окружение пользователя не обнаружены.")
        Return
      End If
      Dim ft(1) As Int32 ' поля структуры FILETIME
      If Not GetType(Object).Assembly.GetType("Microsoft.Win32.Win32Native") _
        .GetMethod("RegQueryInfoKey", BindingFlags.NonPublic Or BindingFlags.Static) _
        .Invoke(Nothing, { _
          rk.Handle, Nothing, Nothing, Nothing, Nothing, Nothing, _
          Nothing, Nothing, Nothing, Nothing, Nothing, ft}) Then
        Console.WriteLine( _
          DateTime.FromFileTime((CType(ft(1), Int64) << 32) Or CType(ft(0), UInt32)) _
        )
      End If
    End Using
  End Sub
End Module
3
Yury Komar
Модератор
Эксперт .NET
2891 / 2627 / 416
Регистрация: 27.01.2014
Сообщений: 4,791
17.06.2019, 10:25 206
Поместить Панель или GroupBox, да что угодно, в ContextMenuStrip
оставлю здесь, чтоб не потерять

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        'Создадим GroupBox
        Dim p As New GroupBox
        p.Size = New Size(500, 500)
        p.Dock = DockStyle.Fill
        p.Text = "GroupBox внутри менюшки"
 
        'Создадим кнопку
        Dim b As New Button
        b.Text = "Кнопочка"
        b.Location = New Point(250, 250)
 
        'Добавим кнопку в бокс
        p.Controls.Add(b) 'Добавим в групбокс
 
        'Создадим Хост, добавив ГРупБокс в него
        Dim hst As New ToolStripControlHost(p, "pan")
        hst.AutoSize = False
 
        'Размещаем наш бокс внутри менюшки и радуемся
        ContextMenuStrip1.Items.Add(hst)
5
Изображения
Тип файла: png примерр_1.png (20.2 Кб, 54 просмотров)
Yury Komar
Модератор
Эксперт .NET
2891 / 2627 / 416
Регистрация: 27.01.2014
Сообщений: 4,791
19.06.2019, 06:43 207
Таблица цветов в .NET
Полезно визуально видеть цвет, его имя и HEX-значение цвета.
9
Изображения
Тип файла: png Таблица цветов.png (151.0 Кб, 78 просмотров)
vova_king
30 / 30 / 10
Регистрация: 29.07.2010
Сообщений: 291
19.08.2019, 17:18 208
Диалоговое окно выбора папок

Код класса

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
40
41
42
43
44
45
46
47
48
49
Public Class FolderSelectDialog
 
        Public Class DialogResult
            Public ReturnCode As Integer
            Public FileName As String
        End Class
 
        Public Shared Function Show(ownerHandle As IntPtr, initialDirectory As String, title As String) As DialogResult
            Dim c_flags As BindingFlags = BindingFlags.Instance Or BindingFlags.[Public] Or BindingFlags.NonPublic
            Dim s_windowsFormsAssembly As Assembly = GetType(FileDialog).Assembly
            Dim s_iFileDialogType As Type = s_windowsFormsAssembly.[GetType]("System.Windows.Forms.FileDialogNative+IFileDialog")
            Dim s_createVistaDialogMethodInfo As MethodInfo = GetType(OpenFileDialog).GetMethod("CreateVistaDialog", c_flags)
            Dim s_onBeforeVistaDialogMethodInfo As MethodInfo = GetType(OpenFileDialog).GetMethod("OnBeforeVistaDialog", c_flags)
            Dim s_getOptionsMethodInfo As MethodInfo = GetType(FileDialog).GetMethod("GetOptions", c_flags)
            Dim s_setOptionsMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("SetOptions", c_flags)
            Dim s_fosPickFoldersBitFlag As UInteger = CUInt(s_windowsFormsAssembly.[GetType]("System.Windows.Forms.FileDialogNative+FOS").GetField("FOS_PICKFOLDERS").GetValue(Nothing))
            Dim s_vistaDialogEventsConstructorInfo As ConstructorInfo = s_windowsFormsAssembly.[GetType]("System.Windows.Forms.FileDialog+VistaDialogEvents").GetConstructor(c_flags, Nothing, New Type() {GetType(FileDialog)}, Nothing)
            Dim s_adviseMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("Advise")
            Dim s_unAdviseMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("Unadvise")
            Dim s_showMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("Show")
 
            Dim openFileDialog = New OpenFileDialog() With {
                        .AddExtension = False,
                        .CheckFileExists = False,
                        .DereferenceLinks = True,
                        .Filter = "Folders|",
                        .InitialDirectory = initialDirectory,
                        .Multiselect = False,
                        .Title = title
                    }
 
            Dim iFileDialog = s_createVistaDialogMethodInfo.Invoke(openFileDialog, New Object() {})
            s_onBeforeVistaDialogMethodInfo.Invoke(openFileDialog, New Object() {iFileDialog})
            s_setOptionsMethodInfo.Invoke(iFileDialog, New Object() {CUInt(s_getOptionsMethodInfo.Invoke(openFileDialog, New Object() {})) Or s_fosPickFoldersBitFlag})
 
            Dim adviseParametersWithOutputConnectionToken = New Object() {s_vistaDialogEventsConstructorInfo.Invoke(New Object() {openFileDialog}), 0UI}
            s_adviseMethodInfo.Invoke(iFileDialog, adviseParametersWithOutputConnectionToken)
            Dim prest As String
            Try
                Dim retVal As Integer = CInt(s_showMethodInfo.Invoke(iFileDialog, New Object() {ownerHandle}))
 
                Return New DialogResult() With {.ReturnCode = retVal, .FileName = openFileDialog.FileName}
                prest = System.IO.Path.GetFileName(openFileDialog.FileName)
            Finally
                s_unAdviseMethodInfo.Invoke(iFileDialog, New Object() {adviseParametersWithOutputConnectionToken(1)})
            End Try
        End Function
 
    End Class

vb.net
1
2
3
dim apppath  as string ' переменная хранящая путь выбранной папки
dim pathFolders as string = "C:" ' начальная папка 
apppath = FolderSelectDialog.Show(Me.Handle, pathFolders, "Выберите папку").FileName ' присваиваем переменной полученный результат
PS. При нажатии "Отмена" пока не знаю как обрабатывать :-(
4
ovva
2990 / 2457 / 608
Регистрация: 02.02.2013
Сообщений: 2,375
Записей в блоге: 2
15.12.2019, 16:13 209
Пример, переведенного на vb.net, диалогового окна выбора папок из
https://stackoverflow.com/questions/...86992#15386992
PS. Хотя можно было бы и не переводить, а использовать как есть.
Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Imports System.Reflection
Imports System.Windows.Forms
Namespace FSD
    Public Class FolderSelectDialog
        Private _initialDirectory As String
        Private _title As String
        Private _fileName As String = ""
        Public Property InitialDirectory As String
            Get
                Return If(String.IsNullOrEmpty(_initialDirectory), Environment.CurrentDirectory, _initialDirectory)
            End Get
            Set(ByVal value As String)
                _initialDirectory = value
            End Set
        End Property
 
        Public Property Title As String
            Get
                Return If(_title, "Select a folder")
            End Get
            Set(ByVal value As String)
                _title = value
            End Set
        End Property
 
        Public ReadOnly Property FileName As String
            Get
                Return _fileName
            End Get
        End Property
 
        Public Function Show() As Boolean
            Return Show(IntPtr.Zero)
        End Function
 
        Public Function Show(ByVal hWndOwner As IntPtr) As Boolean
            Dim result = If(Environment.OSVersion.Version.Major >= 6, VistaDialog.Show(hWndOwner, InitialDirectory, Title), ShowXpDialog(hWndOwner, InitialDirectory, Title))
            _fileName = result.FileName
            Return result.Result
        End Function
 
        Private Structure ShowDialogResult
            Public Property Result As Boolean
            Public Property FileName As String
        End Structure
 
        Private Shared Function ShowXpDialog(ByVal ownerHandle As IntPtr, ByVal initialDirectory As String, ByVal title As String) As ShowDialogResult
            Dim folderBrowserDialog = New FolderBrowserDialog With {
                .Description = title,
                .SelectedPath = initialDirectory,
                .ShowNewFolderButton = False
            }
            Dim dialogResult = New ShowDialogResult()
            If folderBrowserDialog.ShowDialog(New WindowWrapper(ownerHandle)) = Windows.Forms.DialogResult.OK Then
                dialogResult.Result = True
                dialogResult.FileName = folderBrowserDialog.SelectedPath
            End If
            Return dialogResult
        End Function
 
        Private Class VistaDialog
            Private Const c_foldersFilter As String = "Folders|" & vbLf
            Private Const c_flags As BindingFlags = BindingFlags.Instance Or BindingFlags.[Public] Or BindingFlags.NonPublic
            Private Shared ReadOnly s_windowsFormsAssembly As Assembly = GetType(FileDialog).Assembly
            Private Shared ReadOnly s_iFileDialogType As Type = s_windowsFormsAssembly.[GetType]("System.Windows.Forms.FileDialogNative+IFileDialog")
            Private Shared ReadOnly s_createVistaDialogMethodInfo As MethodInfo = GetType(OpenFileDialog).GetMethod("CreateVistaDialog", c_flags)
            Private Shared ReadOnly s_onBeforeVistaDialogMethodInfo As MethodInfo = GetType(OpenFileDialog).GetMethod("OnBeforeVistaDialog", c_flags)
            Private Shared ReadOnly s_getOptionsMethodInfo As MethodInfo = GetType(FileDialog).GetMethod("GetOptions", c_flags)
            Private Shared ReadOnly s_setOptionsMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("SetOptions", c_flags)
            Private Shared ReadOnly s_fosPickFoldersBitFlag As UInteger = CUInt(s_windowsFormsAssembly.[GetType]("System.Windows.Forms.FileDialogNative+FOS").GetField("FOS_PICKFOLDERS").GetValue(Nothing))
            Private Shared ReadOnly s_vistaDialogEventsConstructorInfo As ConstructorInfo = s_windowsFormsAssembly.[GetType]("System.Windows.Forms.FileDialog+VistaDialogEvents").GetConstructor(c_flags, Nothing, {GetType(FileDialog)}, Nothing)
            Private Shared ReadOnly s_adviseMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("Advise")
            Private Shared ReadOnly s_unAdviseMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("Unadvise")
            Private Shared ReadOnly s_showMethodInfo As MethodInfo = s_iFileDialogType.GetMethod("Show")
 
            Shared Function Show(ByVal ownerHandle As IntPtr, ByVal initialDirectory As String, ByVal title As String) As ShowDialogResult
                Dim openFileDialog = New OpenFileDialog With {
                    .AddExtension = False,
                    .CheckFileExists = False,
                    .DereferenceLinks = True,
                    .Filter = c_foldersFilter,
                    .InitialDirectory = initialDirectory,
                    .Multiselect = False,
                    .Title = title
                }
                Dim iFileDialog = s_createVistaDialogMethodInfo.Invoke(openFileDialog, New Object() {})
                s_onBeforeVistaDialogMethodInfo.Invoke(openFileDialog, {iFileDialog})
                s_setOptionsMethodInfo.Invoke(iFileDialog, New Object() {CUInt(s_getOptionsMethodInfo.Invoke(openFileDialog, New Object() {})) Or s_fosPickFoldersBitFlag})
                Dim adviseParametersWithOutputConnectionToken = {s_vistaDialogEventsConstructorInfo.Invoke(New Object() {openFileDialog}), 0UI}
                s_adviseMethodInfo.Invoke(iFileDialog, adviseParametersWithOutputConnectionToken)
                Try
                    Dim retVal As Integer = CInt(s_showMethodInfo.Invoke(iFileDialog, New Object() {ownerHandle}))
                    Return New ShowDialogResult With {
                        .Result = retVal = 0,
                        .FileName = openFileDialog.FileName
                    }
                Finally
                    s_unAdviseMethodInfo.Invoke(iFileDialog, {adviseParametersWithOutputConnectionToken(1)})
                End Try
            End Function
        End Class
 
        Private Class WindowWrapper
            Implements IWin32Window
            Private ReadOnly _handle As IntPtr
 
            Public Sub New(ByVal handle As IntPtr)
                _handle = handle
            End Sub
 
            Public ReadOnly Property Handle As IntPtr Implements IWin32Window.Handle
                Get
                    Return _handle
                End Get
            End Property
        End Class
    End Class
End Namespace

Применение
vb.net
1
2
3
4
5
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim dialog = New FolderSelectDialog With {.InitialDirectory = "C:\", .Title = "Выбор папки"}
    dialog.Show(Handle)
    Label1.Text = dialog.FileName
End Sub
2
Zhivoder
3 / 2 / 0
Регистрация: 16.12.2019
Сообщений: 16
18.12.2019, 13:49 210
Вроде не нашел такого, если было, то не убивайте =)
Прозрачный PictureBox, код не мой, но очень полезный:

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Class TransparentPictureBox
    Inherits PictureBox
    Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaintBackground(e)
 
        If Parent IsNot Nothing Then
            Dim index As Integer = Parent.Controls.GetChildIndex(Me)
 
            For i As Integer = Parent.Controls.Count - 1 To index + 1 Step -1
                Dim c As Control = Parent.Controls(i)
                If c.Bounds.IntersectsWith(Bounds) AndAlso c.Visible = True Then
                    Dim bmp As New Bitmap(c.Width, c.Height, e.Graphics)
                    c.DrawToBitmap(bmp, c.ClientRectangle)
                    e.Graphics.TranslateTransform(c.Left - Left, c.Top - Top)
                    e.Graphics.DrawImageUnscaled(bmp, Point.Empty)
                    e.Graphics.TranslateTransform(Left - c.Left, Top - c.Top)
                    bmp.Dispose()
                End If
            Next
        End If
    End Sub
End Class
1
Изображения
Тип файла: jpg scr_sh.jpg (89.0 Кб, 13 просмотров)
January29
11 / 10 / 1
Регистрация: 17.02.2019
Сообщений: 15
05.01.2020, 17:56 211
Проверка EXCEL на ПК
Проверял на XP-SP2 и Windows 7 SP1 работает
курил форум и нашел многие спрашивают

вот код
Копируем вставляем изменяем

Кликните здесь для просмотра всего текста

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public Class Form1
    ' ПРОВЕРКА УСТАНОВКИ EXCEL НА ПК
    ' НА ФОРМУ КИДАЕМ КНОПКУ Button1 и Label1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 
        Dim excelApp As Object
        Try
            excelApp = CreateObject("Excel.Application")
            If excelApp.Name = "Microsoft Excel" Then 'сверка имени
                Label1.Text = "Установлен " & excelApp.Name & " " & excelApp.version ' пишет имя и версию
                excelApp.Quit() 'закрытие процесса
            End If
        Catch ex As System.Exception
            Label1.Text = "У ВАС НЕ УСТАНОВЛЕН ЕХСЕL" ' ЕСЛИ НЕТ - EXCEL
        End Try
 
    End Sub
End Class
2
05.01.2020, 17:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.01.2020, 17:56

Хорошие учебники по Visual Basic Net
Подскажите пожалуйста хорошие учебники по visual basic net,спасибо

Аналог TStringList в Visual Basic.NET
Здравствуйте все! Помогите разобраться мне надо строки в текстовом файле сохранять в виде списка...

Литература и ресурсы по Visual Basic .NET
Литература по Visual Basic.NET 1. Виктор Зиборов &quot;Visual Basic 2010 на примерах&quot; Издательство:...


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

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

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