如何从工具箱中添加表格并在 Visual Studio 2012 express 中编写 vb.Net 代码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16820795/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 13:47:35  来源:igfitidea点击:

How to add a table from toolbox and write vb.Net code in visual studio 2012 express

vb.net

提问by user1816353

I am learning VB.net. I am following Charpter 3 of Brian Siler's special edition (2001) using MS VB.net. It looks thing has been changed not too much with VB, but I met a problem in adding table from toolbox.

我正在学习 VB.net。我正在使用 MS VB.net 关注 Brian Siler 特别版 (2001) 的第 3 章。看起来 VB 的变化不大,但是我在从工具箱添加表格时遇到了问题。

In the Toolbox (versions from Visual Studio 2012 Express; ASP.net 2012), to build a VB.net project, there are items like TextBox and Table. To build a web app, I can add TextBox, Label, etc and coding them without problems. However, when I add table, there is a problem.

在工具箱(来自 Visual Studio 2012 Express 的版本;ASP.net 2012)中,要构建 VB.net 项目,有文本框和表格等项目。要构建 Web 应用程序,我可以添加 TextBox、Label 等,并毫无问题地对其进行编码。但是,当我添加表时,出现问题。

As with Textbox and Label, I rename the table ID (to tblAmortize) first. Then I input the codes from their book, and got an error:

与文本框和标签一样,我首先将表 ID 重命名为 (to tblAmortize)。然后我从他们的书中输入代码,并得到一个错误:

'tblAmortize' is not declared. It may be inaccessible due to its protection level"

'tblAmortize' is not declared. It may be inaccessible due to its protection level"

As I know, the TextBox item, such as txtPrincipal.Textdoes not need to be declared when we use it. But it seem this "table" tblAmortizeitem needs to be declared first, or needs to be build up a link because tblAmortizeis located in Form 2while btnShowDetail_Clickis in Form 1. The full code is as following:

据我所知,TextBox 项,例如,txtPrincipal.Text在我们使用它时不需要声明。但似乎这个“表”tblAmortize项需要先声明,或者需要建立一个链接,因为tblAmortize位于Form 2while btnShowDetail_Clickis in 中Form 1。完整代码如下:



Public Class Hello_Web
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim intTerm As Integer                'Term, in years
        Dim decPrincipal As Decimal           'Principal amount $
        Dim decIntRate As Decimal             'Interst rate %
        Dim dblPayment As Double              'Monthly payment $

        Dim decMonthInterest As Decimal       'Interest part of monthly payment
        Dim decTotalInterest As Decimal = 0   'Total interest paid
        Dim decMonthPrincipal As Decimal      'Principal part of monthly pament
        Dim decTotalPrincipal As Decimal = 0  'Remaining principal

        Dim intMonth As Integer               'Current month
        Dim intNumPayments As Integer         'Number of monthly payments
        Dim i As Integer                      'Temporary loop counter
        Dim rowTemp As TableRow               'Temporary row object
        Dim celTemp As TableCell              'Temporary cell object

        If Not IsPostBack Then        'Evals true first time browser hits the page
            'SET Up THE TABLE HEADER ROW
            rowTemp = New TableRow()
            For i = 0 To 4
                celTemp = New TableCell()
                rowTemp.Cells.Add(celTemp)
                celTemp = Nothing
            Next
            rowTemp.Cells(0).Text = "Payment"
            rowTemp.Cells(1).Text = "Interest"
            rowTemp.Cells(2).Text = "Principal"
            rowTemp.Cells(3).Text = "Total Int."
            rowTemp.Cells(4).Text = "Balance"
            rowTemp.Font.Bold = True
            tblAmortize.Rows.Add(rowTemp)


            'PULL VALUES FROM SESSION VARIABLES

            intTerm = Convert.ToInt32(Session("term"))
            decPrincipal = Convert.ToDecimal(Session("Principal"))
            decIntRate = Convert.ToDecimal(Session("IntRate"))
            dblPayment = Convert.ToDecimal(Session("decPayment"))

            'CALCULATE AMORTIZATION SCHEDULE
            intNumPayments = intTerm * 12
            decTotalPrincipal = decPrincipal
            For intMonth = 1 To intNumPayments
                'Determine Values For the Current Row
                decMonthInterest = (decIntRate / 100) / 12 * decTotalPrincipal
                decTotalInterest = decTotalInterest + decMonthInterest
                decMonthPrincipal = Convert.ToDecimal(dblPayment) - decMonthInterest
                If decMonthPrincipal > decPrincipal Then
                    decMonthPrincipal = decPrincipal
                End If
                decTotalPrincipal = decTotalPrincipal - decMonthPrincipal

                'Add the values to the table
                rowTemp = New TableRow()
                For i = 0 To 4
                    celTemp = New TableCell()
                    rowTemp.Cells.Add(celTemp)
                    celTemp = Nothing
                Next i

                rowTemp.Cells(0).Text = intMonth.ToString
                rowTemp.Cells(1).Text = Format(decMonthInterest, "$###0.00")
                rowTemp.Cells(2).Text = Format(decMonthPrincipal, "$###0.00")
                rowTemp.Cells(3).Text = Format(decTotalInterest, "$###0.00")
                rowTemp.Cells(4).Text = Format(decTotalPrincipal, "$###0.00")

                tblAmortize.Rows.Add(rowTemp)
                rowTemp = Nothing
                'PrevFormat()

            Next intMonth
        End If

    End Sub


    Protected Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
        Dim decPrincipal As Decimal
        Dim decIntRate As Decimal
        Dim intTerm As Integer, dblPayment As Double

        'Store the principle in the variable decprincipal
        'decPrincipal = CDbl(txtPrincipal.Text)
        decPrincipal = (txtPrincipal.Text)

        'Convert interest rate to its decimal equivalent
        ' i.e. 12.75 becomes 0.1275
        decIntRate = CDbl(txtIntrate.Text) / 100

        'Convert annual interest rate to monthly
        '  by dividing by 12 (months in a year)
        decIntRate = decIntRate / 12

        'Convert number of years to number of months
        '  by multiplying by 12 (months in a year)
        intTerm = CDbl(txtTerm.Text) * 12

        'Calculate and display the monthly payment.
        '  The format function makes the displayed number look good.
        dblPayment = decPrincipal * (decIntRate / (1 - (1 + decIntRate) ^ -intTerm))
        txtPayment.Text = Format(dblPayment, "$#,##0.00")

        'Add Amortization Schedule
        '  The Schedule button will be shown only after you click the Calculate Payment LinkButton
        btnShowDetail.Visible = True
    End Sub

    Protected Sub btnShowDetail_Click(sender As Object, e As EventArgs) Handles btnShowDetail.Click

        'Storetext box values in session variables
        Session.Add("Principal", txtPrincipal.Text)
        Session.Add("IntRate", txtIntrate.Text)
        Session.Add("Term", txtTerm.Text)
        Session.Add("Payment", txtPayment.Text)

        'Display the Amortization form
        Response.Redirect("frmAmort.aspx")
    End Sub
End Class

回答by Vishal

While you declare the table you must write runat = "Server"

当你声明表时,你必须写 runat = "Server"

This is the code sample

这是代码示例

<Table ID = "tblMyTable" runat = "Server">
    .
    .
    .
</Table>

Now you can use your table in code.

现在您可以在代码中使用您的表。

If you can already access the table in Form2's Code and you want it to be accessed in Form1's Code and if you don't know how to do it then here is the solution :

如果您已经可以在 Form2 的代码中访问该表,并且希望在 Form1 的代码中访问它,如果您不知道该怎么做,那么这里是解决方案:

Dim tbl as new Table
tbl = CType(Form1.FindControl("tblMyTable"),Table)