zoukankan      html  css  js  c++  java
  • 添加、删除标签以及窗体间参数的传递


     

    这是在实现Arcgis Engine的书签的添加以及读取时接触到的:点击添加标签后,弹出给标签命名的窗体,输入名称后将该名字添加到另一个标签列表的窗体。在主对话框分别实现存储和读取的接口。

    主窗体的实现的代码如下:

    Private Sub 添加书签ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 存为书签ToolStripMenuItem.Click
            Dim pMapBookmarks As IMapBookmarks
            pMapBookmarks = AxMapControl1.ActiveView.FocusMap
            Dim pAOIBookmark As IAOIBookmark
            pAOIBookmark = New AOIBookmark
            pAOIBookmark.Location = AxMapControl1.ActiveView.Extent
    
    
            Dim Bookmark As New Bookmark
            'Dim pBMname As String
            ' Bookmark.MdiParent = Me
            Bookmark.ShowDialog()
            'My.Forms.Bookmark.Bookmark_Load(sender, e)
    
            If pBookmarkName IsNot Nothing Then
                pAOIBookmark.Name = pBookmarkName
    
                pMapBookmarks.AddBookmark(pAOIBookmark)
    
            End If
    
        End Sub
    
        Private Sub 打开书签ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 打开书签ToolStripMenuItem.Click
            Dim pMapBookmarks As IMapBookmarks
            pMapBookmarks = CType(AxMapControl1.ActiveView.FocusMap, IMapBookmarks)
            Dim pEnumSpatialBM As IEnumSpatialBookmark
            pEnumSpatialBM = pMapBookmarks.Bookmarks
    
    
            BookmarkList.ShowDialog()
            Dim pOpenBMname As String
            pOpenBMname = OpenBMname
    
            Dim pSpatialBM As ISpatialBookmark
            pSpatialBM = pEnumSpatialBM.Next
            While (pSpatialBM IsNot Nothing)
    
                If pSpatialBM.Name = pOpenBMname Then
                    pSpatialBM.ZoomTo(AxMapControl1.ActiveView.FocusMap)
                    AxMapControl1.ActiveView.Refresh()
                    Return
                End If
                pSpatialBM = pEnumSpatialBM.Next
            End While
          
    
        End Sub
    End Class

    添加书签窗体的代码如下:

    Public BookmarkList As New BookmarkList
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            pBookmarkName = TextBox1.Text
        End Sub
    
        Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'My.Forms.MainForm.BMname = TextBox1.Text
            pBookmarkName = TextBox1.Text
            My.Forms.MainForm.BookmarkList.additem(pBookmarkName)
            Me.Hide()
        End Sub


    书签窗体代码

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim i As Integer
            i = ComboBox1.Items.Count
            My.Forms.MainForm.OpenBMname = ComboBox1.Text
            Me.Hide()
        End Sub
    
            Public Sub additem(ByVal BookmarkName As String)
            ComboBox1.Items.Add(BookmarkName)
        End Sub

    其中pBookmarkName是在新建的模块中定义的公共变量。

    在书签的过程中,主要实现不同窗体间参数的传递。传递方法是:(假如form2 textbox的值向form1的字符串变量m传递)

    方法一:

    定义模块变量str

    form2窗体:

    str=textbox.text

    form1窗体:

    m=str

    方法二:

    在form1中定义公共变量:

    public str as string

    Private sub ButtonOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonOK.Click

    str=textbox.text

    End sub

    在form2中

    直接调用a=My.Forms.Form2.str

    还有一个问题是:显示标签对话框时,用Form2.ShowDialog()而不是Form2.Show()。用后者会运行程序时,运行到Form2.show(),并没有完全弹出Form2,程序也没有调到Form2中,而是继续往下。改成ShowDialog是可以解决问题,可是不知道为什么……哪位知道指点一下哦~

  • 相关阅读:
    【C++基础汇总】参数传递
    常用VC快捷键
    美股交易规则
    xpath 总结1
    【字符集】字符集和编码知识【转】
    【字符集】ASCII 表
    【win32编程学习】常用技巧总结
    【win32编程学习】 调用dll
    【win32编程学习】 创建自己的dll
    充实的生活
  • 原文地址:https://www.cnblogs.com/beileierhao/p/2486089.html
Copyright © 2011-2022 走看看