Quecumber256 Ответов: 2

Очень ржавое использование VB.NET


Я не уверен, что я делаю неправильно,но вот оно.

Недавно я скачал пробную версию элемента управления под названием Active Query Builder. Я посмотрел на один проект под названием GeneralDemo.vbproj и начал изучать его структуру.

Он содержал хорошую программу visual basic для запуска приложения, поэтому я использовал ее повторно.
'Nice Start up routine from Active Query Builder
Imports System.Threading
Imports System.Windows.Forms

Friend NotInheritable Class Start
    Private Sub New()
        
    End Sub
    ''' <summary>
    ''' The main entry point for the application.
    ''' </summary>
    <STAThread> _
    Friend Shared Sub Main()
        ' Catch unhandled exceptions for debugging purposes
        AddHandler AppDomain.CurrentDomain.UnhandledException, _
            AddressOf CurrentDomain_UnhandledException
        AddHandler Application.ThreadException, _
            AddressOf Thread_UnhandledException

        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)
        'The following is were we start the application
        Application.Run(New AccessConnectionForm())
    End Sub

    Private Shared Sub CurrentDomain_UnhandledException(sender As Object, _
                                                        e As UnhandledExceptionEventArgs)
        Dim exception As Exception = TryCast(e.ExceptionObject, Exception)
        If exception IsNot Nothing Then
            Dim exceptionDialog As New ThreadExceptionDialog(exception)
            If exceptionDialog.ShowDialog() = DialogResult.Abort Then
                Application.[Exit]()
            End If
        End If
    End Sub

    Private Shared Sub Thread_UnhandledException(sender As Object, _
                                                 e As ThreadExceptionEventArgs)
        If e.Exception IsNot Nothing Then
            Dim exceptionDialog As New ThreadExceptionDialog(e.Exception)

            If exceptionDialog.ShowDialog() = DialogResult.Abort Then
                Application.[Exit]()
            End If
        End If
    End Sub
End Class

Демонстрационная программа также содержала различные формы подключения для различных систем баз данных. Для развлечения я хотел разместить изображение, чтобы показать мне, к какой базе данных я пытаюсь подключиться. Поэтому я поместил коробку с картинками на форму и попытался загрузить ее.PNG-файл в поле изображения.
Imports System.Data.OleDb
Imports System.Windows.Forms

Partial Public Class AccessConnectionForm
    Inherits Form
    Public strAppPAth As String = Application.StartupPath
    Public ConnectionString As String = ""

    Public Sub New()
        InitializeComponent()
        picDB.Image = Image.FromFile(strAppPAth & "MS-Access.png")
    End Sub

    Private Sub btnConnect_Click(sender As Object, _
                                 e As EventArgs) Handles btnConnect.Click
        ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0"
        ConnectionString += ";Data Source=" & txtDB.Text
        ConnectionString += ";User Id=" & txtDB.Text
        ConnectionString += ";Password="

        If txtDB.Text.Length > 0 Then
            ConnectionString += txtDB.Text & ";"
        End If

        ' check the connection

        Using connection As New OleDbConnection(ConnectionString)
            Me.Cursor = Cursors.WaitCursor

            Try
                connection.Open()
            Catch ex As System.Exception
                MessageBox.Show(ex.Message, "Connection Failure.")
                Me.DialogResult = DialogResult.None
            Finally
                Me.Cursor = Cursors.[Default]
            End Try
        End Using
    End Sub

    Private Sub btnBrowse_Click(sender As Object, _
                                e As EventArgs) Handles btnBrowse.Click
        If openFileDialog1.ShowDialog() = DialogResult.OK Then
            txtDB.Text = openFileDialog1.FileName
        End If
    End Sub
End Class


Я получаю ошибку в переменной strAppPath. Я пытаюсь сделать программу исполняемой из любого места, и она не распознает папку ресурсов, в которой я в данный момент храню изображение.

Что я уже пробовал:

Единственное, что я добавил, Было:
Public strAppPath As String = Application.StartupPath

В верхней части формы подключения доступа. и -
picDB.Image = Image.FromFile(strAppPAth & "MS-Access.png")

В публичной суб-новой процедуре при запуске формы.

Может ли кто-нибудь указать, что я сделал не так?

Спасибо,

2 Ответов

Рейтинг:
7

Quecumber256

Я понял, что сделал не так.

1. Щелкните правой кнопкой мыши имя вашего решения в обозревателе решений и выберите пункт Свойства.

2. Перейдите на вкладку ресурсы и добавьте необходимые ресурсы для вашего решения.

3.в форму, где вам нужен ресурс, в случае необходимости в графическое поле добавьте следующий код.

PictureBox1.Image = My.Resources.<Image Name>


Я знал, что это должно быть что-то простое, но мои навыки кодирования атрофировались от недостатка использования.


Рейтинг:
2

cvogt61457

Посмотрите на путь, который вы создаете в

picDB.Image = Image.FromFile(strAppPAth & "MS-Access.png")

Есть ли у strAppPAth правильные косые черты?
Использовать Системы.ИО.Путь.Combine (string, string) - объединить путь к имени файла. Combine () правильно исправит косые черты.