vb.net 如何引用自定义类库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb.net 如何引用自定义类库相关的知识,希望对你有一定的参考价值。

请问,我在visual studio里面新建了个项目A窗体应用程序,然后新建了个类库B,B里面放了个User.vb的类文件,然后怎么在项目A中使用user?

在项目A里添加引用,在“添加引用”对话框里找到项目B就可以了。也可以先把项目B生成dll文件,然后在项目A中添加对这个dll文件的引用。追问

恩,好了,然后再问下,visual studio怎么让vb.net类中的属性自动生成get和set方法?像java那样?不然有好多属性的话写的太麻烦?

追答

不好意思,Java是怎么样的我不太清楚……

其实我也不太明白你说的自动生成get和set方法是什么意思。

VB.NET里有下面几种写属性的模式:

    输入Property然后按两次Tab键,Visual Studio会自动生成一个私有字段和一个公共属性,公共属性的Get和Set访问器都已经填好了,我们只需要给私有字段和公共属性命名。

    手动输入Public Property PropertyName As Type然后按回车键,此时Visual Studio会自动生成一个隐含的私有字段,字段名是_PropertyName,并且不显示在代码文件中;这个属性的Get和Set访问器也不会显示在代码文件中;

    利用“插入代码段”功能插入只读或只写属性。

追问

就是这个意思,谢谢啊,怎么加你,以后有问题请教啊?

追答

不敢说请教~我也只是业余的,我们互帮互助吧~我的QQ号是243297031,加的时候写上你的百度账户名就好了~

参考技术A   1,首先在要定义事件的类中声明事件,然后使用RaiseEvent 激发该事件.
  Public Class Person
  Private name As String
  Public Event walked(ByVal distance As Integer)
  Public Sub onwalk(ByVal distance As Integer)
  RaiseEvent walked(distance)
  End Sub
  End Class
  2. 使用WithEvents 声明该类的对象.
  Friend WithEvents myperson As Person
  3,编写事件处理代码.
  Private Sub myperson_walked(ByVal distance As Integer) -
  Handles myperson.walked
  TextBox1.Text = "walked" & distance
  End Sub
  4,调用事件.  Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)  Handles Button1.Click
  myperson.onwalk(20)
  End Sub

如何使用 VB.Net 自定义 Excel

【中文标题】如何使用 VB.Net 自定义 Excel【英文标题】:How to Customize Excel using VB.Net 【发布时间】:2016-09-06 06:56:08 【问题描述】:

大家早上好。

我在 VB.Net 中有一个程序,可以将 Mysql 中的数据填充到 Datagridview 中。

我还有一个名为“导出”的按钮,它将像这样以 Excel 格式导出 Datagridview 数据。

但是我的教授喜欢这种格式。

我怎样才能做到这一点?

    放置一个中心标题

    在数字列的数字末尾放置一个 .00

    查找列中的最后一个单元格并求和。

我希望有人能帮助我。

这是我在导出中的代码

If DataGridView1.Rows.Count = 0 Then
            MsgBox("Nothing to Export")
        Else
            Dim ExcelApp As Object, ExcelBook As Object
            Dim ExcelSheet As Object
            Dim i As Integer
            Dim j As Integer

            ExcelApp = CreateObject("Excel.Application")
            ExcelBook = ExcelApp.WorkBooks.Add
            ExcelSheet = ExcelBook.WorkSheets(1)
            With ExcelSheet
                For Each column As DataGridViewColumn In DataGridView1.Columns
                    .cells(1, column.Index + 1) = column.HeaderText
                Next
                For i = 1 To Me.DataGridView1.RowCount
                    .cells(i + 1, 1) = Me.DataGridView1.Rows(i - 1).Cells("ItemCode").Value
                    For j = 1 To DataGridView1.Columns.Count - 1
                        .cells(i + 1, j + 1) = DataGridView1.Rows(i - 1).Cells(j).Value

                    Next


                Next
            End With
            ExcelApp.Visible = True
            ExcelSheet = Nothing
            ExcelBook = Nothing
            ExcelApp = Nothing

        End If

【问题讨论】:

【参考方案1】:

试试这个代码:

If DataGridView1.Rows.Count = 0 Then
    MsgBox("Nothing to Export")
Else
    Dim ExcelApp As Object, ExcelBook As Object
    Dim ExcelSheet As Object
    Dim i As Integer
    Dim j As Integer
    Dim rowIndex As Integer = 1
    Dim total As Double = 0
    Dim indexTotal As Integer

    ExcelApp = CreateObject("Excel.Application")
    ExcelBook = ExcelApp.WorkBooks.Add
    ExcelSheet = ExcelBook.WorkSheets(1)
    With ExcelSheet

        With .Range(.Cells(rowIndex, 1), .Cells(rowIndex, DataGridView1.Columns.Count))
            .HorizontalAlignment = Excel.Constants.xlCenter
            .VerticalAlignment = Excel.Constants.xlCenter
            .MergeCells = True
            .Value = "PURCHASE REQUISITION"
            .Font.Bold = True
        End With

        rowIndex += 2

        For Each column As DataGridViewColumn In DataGridView1.Columns
            .cells(rowIndex, column.Index + 1) = column.HeaderText
        Next

        .Range(.Cells(rowIndex, 1), .Cells(rowIndex, DataGridView1.Columns.Count)).Font.Bold = True

        rowIndex += 1

        For i = 0 To Me.DataGridView1.RowCount - 1
            .cells(rowIndex, 1) = Me.DataGridView1.Rows(i).Cells("ItemCode").Value
            For j = 1 To DataGridView1.Columns.Count - 1
                If IsNumeric(DataGridView1.Rows(i).Cells(j).Value) Then
                    .cells(rowIndex, j + 1).NumberFormat = "#,##0.00"
                    .cells(rowIndex, j + 1) = DataGridView1.Rows(i).Cells(j).Value
                Else
                    .cells(rowIndex, j + 1) = DataGridView1.Rows(i).Cells(j).Value
                End If
                'You can test also by index for example : if j = indexofTotalColumn then
                If DataGridView1.Columns(j).Name = "Total" Then
                    total += DataGridView1.Rows(i).Cells(j).Value
                    indexTotal = j
                End If
            Next
            rowIndex += 1
        Next

        .cells(rowIndex, indexTotal) = "Grand Total"
        .cells(rowIndex, indexTotal + 1).NumberFormat = "#,##0.00"
        .cells(rowIndex, indexTotal + 1) = total 
        .Range(.Cells(rowIndex, indexTotal), .Cells(rowIndex, indexTotal + 1)).Font.Bold = True

    End With
    ExcelApp.Visible = True
    ExcelSheet = Nothing
    ExcelBook = Nothing
    ExcelApp = Nothing
End If

【讨论】:

嗨,先生,我只能说哇!非常感谢,我的代码有一个错误,它不计算列 J 中的单元格。总是显示 9.00 而不是计算总计,这只是我的问题。我会接受的。 好的,我明白了,您必须在这一行将indexTotal 更改为total.cells(rowIndex, indexTotal + 1) = total 喜欢答案(我有更改答案)! 先生,我只能说非常感谢您,T.Y.S.M 已经完成,您对我帮助很大

以上是关于vb.net 如何引用自定义类库的主要内容,如果未能解决你的问题,请参考以下文章

自定义类库,并引用

如何使用本机库自定义项目选择器的背景颜色

Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制VB.Net版

我可以将类引用作为参数传递给 VB Net 中的函数吗?

SceneKit 与 Vuforia AR 库自定义模型

将自定义类库 (dll) 添加到项目的问题