VB.NET - 最简单的方法导出/转换winform应用程序与Web应用程序ASP.NET [英] VB.NET - Easiest way to Export / Convert WinForm App to Web ASP.NET App

查看:202
本文介绍了VB.NET - 最简单的方法导出/转换winform应用程序与Web应用程序ASP.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

背景:我有写在VB.NET一个winform应用程序,使用一个WebService发出不同的邀请基础上,营销公司,他们选择采取不同的面试用户。在WinForm程序是从各种文本框,列表框,和dropdownlists的拉动字符串值来创建一些XML,并把它推到所谓的AcompServiceClient Web服务

问题:


  • 有向导或第三方应用程序,将WinForm的数据导出到Web窗体asp.net或者我应该从头开始构建一个aspx页面瓦特/所有控件的winform应用程序相同的命名空间?

  • 哪些文件,我需要运输或设置,以使除了AcompServiceClient Web服务这项工作,并在code-VB的背后? (看项目文件截图)

  • 请我一定要复制在app.config文件的任何部分,它适应的web.config文件?

我在想:


  • 我可以通过复制Acomp_Invitation_Form.vb页面背后的AComp_Invitation_Web_App.aspx.vb code开始。

  • 添加现有Web服务关闭Web服务器

  • 手动重新添加格式,文本框,列表框,并使用相同的名称下拉列表前端aspx页面上/ ID的

下面是在WinForm应用程序的截图:

这里的项目文件的截图:

下面是我的code对Acomp_Invitation_Form.vb:

 进口TestClient.aCompService
进口System.Text
公共类Form1的私人代理作为新AcompServiceClient
私人小组东西()    昏暗splitContractingBundle()作为字符串
    splitContractingBundle =斯普利特(cb2.SelectedItem,|)
    昏暗splitMarketingCompany()作为字符串
    splitMarketingCompany =斯普利特(cb3.SelectedItem,|)
    昏暗strDate作为字符串= System.DateTime.Now.ToString
    昏暗strOpData作为字符串=的String.Format({0}〜{1}〜{2}〜{3}〜{4}〜{5}〜{6}〜{7}〜{8}〜{9}〜 {10},
                                            TRIM(splitMarketingCompany(0)),txtFirstName.Text,,txtLastName.Text,
                                            txtEmail.Text,txtEmail.Text,1,strDate,
                                            挂起,1/1/1900,调整(splitContractingBundle(0)))    昏暗INT1由于布尔= proxy.AddContractOpportunity(strOpData,测试,测试)
    txtEmail.Text =
    txtFirstName.Text =
    txtLastName.Text =
    lbCarriers.Items.Clear()
    cb2.Items.Clear()
    cb3.Items.Clear()
    cb2.SelectedItem =
    cb3.SelectedText =
结束小组私人小组的button1_Click(BYVAL发件人为System.Object的,BYVAL E上System.EventArgs)把手Button1.Click    TODO添加code来验证那些reaquired所有的选择都得到满足。
    'ccemail和附加信息不要求
    昏暗的名字作为字符串= txtFirstName.Text
    昏暗姓氏作为字符串= txtLastName.Text
    昏暗ccEmail作为字符串= txtccEmail.Text
    昏暗某人作为新的StringBuilder
    sb.AppendLine(&下; XML版本=1.0编码=UTF-8>?)
    sb.AppendLine(<根和GT;)
    sb.AppendLine(&所述; MarketingCompany>中)
    sb.AppendLine(&所述; MarketingCompanyName>中)
    ''获取营销公司简称
    昏暗splitMC作为字符串()=斯普利特(cb3.SelectedItem,|)
    昏暗MCShort作为字符串=修剪(splitMC(0))
    sb.AppendLine(的String.Format(< MCNAme> {0}< / MCNAme>中,MCShort))
    sb.AppendLine(的String.Format(< MCNAme> {0}< / MCNAme>中,My.Settings.MarketingCompanyShortName))
    sb.AppendLine(的String.Format(< ccEmail> {0}< / ccEmail>中,txtccEmail.Text))
    sb.AppendLine(的String.Format(< emailMessage> {0}< / emailMessage>中,txtMessage.Text))
    sb.AppendLine(的String.Format(< MarketerName> {0}< / MarketerName>中,txtMarketerName.Text))
    sb.AppendLine(<剂>)
    sb.AppendLine(的String.Format(<&名字GT; {0}< /名字>中,txtFirstName.Text))
    sb.AppendLine(的String.Format(<&姓氏GT; {0}< /姓氏>中,txtLastName.Text))
    sb.AppendLine(的String.Format(<电子邮件和GT; {0}< /电子邮件与GT;,txtEmail.Text))
    sb.AppendLine(&所述; CRMGuid> 123456&下; / CRMGuid>中)
    昏暗的spltBundles()作为字符串    每个项目在cb2.SelectedItems
        如果修剪(项目)LT;> 然后
            spltBundles =斯普利特(项目,|)
            sb.AppendLine(&所述; ContractingOpportunity>中)
            sb.AppendLine(的String.Format(<载体> {0}&下; /载波>中,修剪(spltBundles(0))))
            sb.AppendLine(String.Format(\"<ContractingOpportunityName>{0}</ContractingOpportunityName>\", TRIM(spltBundles(1))))
            sb.AppendLine(&下; / ContractingOpportunity&gt;中)
        万一
    下一个
    sb.AppendLine(&LT; /剂&gt;)
    sb.AppendLine(&下; / MarketingCompanyName&gt;中)
    sb.AppendLine(&下; / MarketingCompany&gt;中)
    sb.AppendLine(&LT; /根&gt;中)
    昏暗xmlStr = sb.ToString
    昏暗INT1由于布尔= proxy.AddContractOpportunity(xmlStr.ToString,测试,测试)
    MSGBOX(如成功)
结束小组私人小组Form1_Load的(BYVAL发件人为对象,BYVAL E上System.EventArgs)把手Me.Load
    GetCarriers()
    GetMarketingCompanies()
结束小组私人小组GetCarriers()
    尝试
        昏暗的AC1作为数组
        AC1 = proxy.GetCarrierNames(测试,测试)        每个项目在AC1
            lbCarriers.Items.Add(的String.Format({0} | {1} | {2},item.CarrierID,item.CarrierNameLong,item.CarrierNameShort))        下一个
    抓住EX为例外
        MSGBOX(ex.Message)
    结束Try结束小组
私人小组GetMarketingCompanies()
    尝试
        昏暗的AC1作为数组
        AC1 = proxy.GetMarketingCompanyNames(测试,测试)        每个项目在AC1
            cb3.Items.Add(的String.Format({0} | {1},item.MarketingCompanyShort,item.MarketingCompanyName))
        下一个
    抓住EX为例外
        MSGBOX(ex.Message)
    结束Try
结束小组私人小组lbCarriers_LostFocus(发送者为对象,E作为System.EventArgs)把手lbCarriers.LostFocus
    昏暗实体专利法条约()作为字符串
    昏暗的AC1作为数组
    cb2.Items.Clear()    每个项目在lbCarriers.SelectedItems
        SPLT =斯普利特(项目,|)
        AC1 = proxy.GetContractingBundles(测试,测试,调整(SPLT(0)))
        对于每个Pitem在AC1
            cb2.Items.Add(修剪(SPLT(2))及|&放大器; Pitem.FormBundleName)
        下一个
    下一个
结束小组
末级


解决方案

是的,你想这样做的方式是我做过很多次的方式。

刚刚方法从后面的code复制并粘贴到您的网页asp.net背后的code。你的一些方法是不兼容的,因为它们不是在asp.net支持,但你会发现,我们真正的快,当你构建项目。

具有完全控制相同的名称在WinForm的那些创建您的网页。当你建立,你所要做的就是修复你的错误,你对你的方式。

它看起来像你迷上了一些服务,让你当然需要引用。

Background: I have a winform application written in VB.NET that uses a WebService to send out different invitations to users based on the marketing company they select to take different interviews. The winform app is pulling string values from a variety of textboxes, listboxes, and dropdownlists to create some XML and push it to a web service called AcompServiceClient

Questions:

  • Is there a wizard or 3rd party application that will export winform data to webform asp.net or should I build an aspx page from scratch w/ the same namespaces for all the controls as the winform app?
  • Which files do I need to transport or setup to make this work besides the AcompServiceClient web service and the code-behind vb? (look at screenshot of the Project Files)
  • Do i have to copy over any parts of the app.config file and adapt it to the web.config file?

I was thinking:

  • I can start by copying the Acomp_Invitation_Form.vb to the AComp_Invitation_Web_App.aspx.vb code behind page.
  • Add existing webservice off the webserver
  • Manually re-add formatting, text boxes, list boxes, and drop down lists on the front end aspx page using the same names / id's

Here's a screenshot of the WinForm App:

Here's a screenshot of the Project Files:

Here's my code on Acomp_Invitation_Form.vb:

Imports TestClient.aCompService
Imports System.Text
Public Class Form1

Private proxy As New AcompServiceClient
Private Sub stuff()

    Dim splitContractingBundle() As String
    splitContractingBundle = Split(cb2.SelectedItem, "|")
    Dim splitMarketingCompany() As String
    splitMarketingCompany = Split(cb3.SelectedItem, "|")
    Dim strDate As String = System.DateTime.Now.ToString
    Dim strOpData As String = String.Format("{0}~{1}~{2}~{3}~{4}~{5}~{6}~{7}~{8}~{9}~{10}",
                                            Trim(splitMarketingCompany(0)), txtFirstName.Text, "", txtLastName.Text,
                                            txtEmail.Text, txtEmail.Text, "1", strDate,
                                            "Pending", "1/1/1900", Trim(splitContractingBundle(0)))

    Dim int1 As Boolean = proxy.AddContractOpportunity(strOpData, "test", "test")
    txtEmail.Text = ""
    txtFirstName.Text = ""
    txtLastName.Text = ""
    lbCarriers.Items.Clear()
    cb2.Items.Clear()
    cb3.Items.Clear()
    cb2.SelectedItem = ""
    cb3.SelectedText = ""
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'TODO Add code to validate that all selections that are reaquired are met.
    'ccemail and the additional message are not required
    Dim firstname As String = txtFirstName.Text
    Dim lastname As String = txtLastName.Text
    Dim ccEmail As String = txtccEmail.Text
    Dim sb As New StringBuilder
    sb.AppendLine("<?xml version=""1.0"" encoding=""utf-8""?>")
    sb.AppendLine("<root>")
    sb.AppendLine("<MarketingCompany>")
    sb.AppendLine("<MarketingCompanyName>")
    ''Get Marketing Company Short Name
    Dim splitMC As String() = Split(cb3.SelectedItem, "|")
    Dim MCShort As String = Trim(splitMC(0))
    sb.AppendLine(String.Format("<MCNAme>{0}</MCNAme>", MCShort))
    'sb.AppendLine(String.Format("<MCNAme>{0}</MCNAme>", My.Settings.MarketingCompanyShortName))
    sb.AppendLine(String.Format("<ccEmail>{0}</ccEmail>", txtccEmail.Text))
    sb.AppendLine(String.Format("<emailMessage>{0}</emailMessage>", txtMessage.Text))
    sb.AppendLine(String.Format("<MarketerName>{0}</MarketerName>", txtMarketerName.Text))
    sb.AppendLine("<agent>")
    sb.AppendLine(String.Format("<FirstName>{0}</FirstName>", txtFirstName.Text))
    sb.AppendLine(String.Format("<LastName>{0}</LastName>", txtLastName.Text))
    sb.AppendLine(String.Format("<Email>{0}</Email>", txtEmail.Text))
    sb.AppendLine("<CRMGuid>123456</CRMGuid>")
    Dim spltBundles() As String

    For Each item In cb2.SelectedItems
        If Trim(item) <> "" Then
            spltBundles = Split(item, "|")
            sb.AppendLine("<ContractingOpportunity>")
            sb.AppendLine(String.Format("<Carrier>{0}</Carrier>", Trim(spltBundles(0))))
            sb.AppendLine(String.Format("<ContractingOpportunityName>{0}</ContractingOpportunityName>", Trim(spltBundles(1))))
            sb.AppendLine("</ContractingOpportunity>")
        End If
    Next
    sb.AppendLine("</agent>")
    sb.AppendLine("</MarketingCompanyName>")
    sb.AppendLine(" </MarketingCompany>")
    sb.AppendLine(" </root>")
    Dim xmlStr = sb.ToString
    Dim int1 As Boolean = proxy.AddContractOpportunity(xmlStr.ToString, "test", "test")
    MsgBox("Made It")
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    GetCarriers()
    GetMarketingCompanies()
End Sub

Private Sub GetCarriers()
    Try
        Dim ac1 As Array
        ac1 = proxy.GetCarrierNames("test", "test")

        For Each item In ac1
            lbCarriers.Items.Add(String.Format("{0} | {1} | {2}", item.CarrierID, item.CarrierNameLong, item.CarrierNameShort))

        Next
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

End Sub
Private Sub GetMarketingCompanies()
    Try
        Dim ac1 As Array
        ac1 = proxy.GetMarketingCompanyNames("test", "test")

        For Each item In ac1
            cb3.Items.Add(String.Format("{0}   |   {1}", item.MarketingCompanyShort, item.MarketingCompanyName))
        Next
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Private Sub lbCarriers_LostFocus(sender As Object, e As System.EventArgs) Handles lbCarriers.LostFocus
    Dim splt() As String
    Dim ac1 As Array
    cb2.Items.Clear()

    For Each item In lbCarriers.SelectedItems
        splt = Split(item, "|")
        ac1 = proxy.GetContractingBundles("test", "test", Trim(splt(0)))
        For Each Pitem In ac1
            cb2.Items.Add(Trim(splt(2)) & " | " & Pitem.FormBundleName)
        Next
    Next
End Sub
End Class

解决方案

Yes, the way you want to do it is the way I have done this many times.

Just copy the methods from your code behind and paste them into the code behind of your asp.net page. Some of your methods are not compatible because they are not supported in asp.net but you will find that our real quick when you build the project.

Create your web page with the controls having exactly the same name as the ones in the winform. When you build, all you have to do is fix your errors and you are on your way.

It looks like you are hooked up to some service so of course you will need to reference that.

这篇关于VB.NET - 最简单的方法导出/转换winform应用程序与Web应用程序ASP.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆