none
PropertyGrid与XML的问题 RRS feed

  • 问题

  • 新建一个文件,一个PropertyGrid1控件,
    如下为一个XML文件,文件名为XMLFile1.xml
    <?xml version="1.0" encoding="utf-8"?>
    <class name="ls">
      <student>
        <型号>M10</型号>
        <公称直径>10</公称直径>
        <螺距>1.5</螺距>
        <拉应力>170</拉应力>
        <剪应力>140</剪应力>
        <压应力>305</压应力>
        <钢材牌号>Q235</钢材牌号>
        <螺栓材质>普通螺栓4.6级</螺栓材质>
      </student>
      <student>
        <型号>M12</型号>
        <公称直径>12</公称直径>
        <螺距>1.5</螺距>
        <拉应力>175</拉应力>
        <剪应力>145</剪应力>
        <压应力>385</压应力>
        <钢材牌号>Q345</钢材牌号>
        <螺栓材质>普通螺栓4.8级</螺栓材质>
      </student>
      <student>
        <型号>M14</型号>
        <公称直径>14</公称直径>
        <螺距>1.5</螺距>
        <拉应力>180</拉应力>
        <剪应力>150</剪应力>
        <压应力>400</压应力>
        <钢材牌号>Q390</钢材牌号>
        <螺栓材质>普通螺栓8.8级</螺栓材质>
      </student>
    </class>
    还有一个文件名为
    先声明,然后Mshan.vb内容为
    Imports System.ComponentModel
    Imports System.Collections.Generic


    Public Class Mshan

    #Region "Private Variables "
        Private xinhao As String = "M10"
        Private paihao As String = "Q235"
        Private caizhi As String = "普通螺栓4.6/4.8级"
        Private gongchen As Integer = "10"
        Private d0 As Integer = gongchen + 2
        Private luoju As Integer = "1.5"
        Private layinli As Integer = "170"
        Private yulali As Integer = "0"
        Private jianyinli As Integer = "140"
        Private yayinli As Integer = "305"
        Private nv As Integer = "1"


    #End Region

    #Region "Public Properties"

        <Category("5螺栓规格"), Description("选择合适的螺栓型号")> _
        Public Property 螺栓型号() As String
            Get
                Return xinhao
            End Get
            Set(ByVal value As String)
                xinhao = value
            End Set
        End Property
        <Category("5螺栓规格"), Description("螺栓钢材牌号")> _
            Public Property 钢材牌号() As String
            Get
                Return paihao
            End Get
            Set(ByVal value As String)
                paihao = value
            End Set
        End Property
        <Category("5螺栓规格")> _
        Public Property 螺栓材质() As String
            Get
                Return caizhi
            End Get
            Set(ByVal value As String)
                caizhi = value
            End Set
        End Property
        <Category("5螺栓规格")> _
    Public Property 受剪面数() As String
            Get
                Return nv
            End Get
            Set(ByVal value As String)
                nv = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
            Public Property 公称直径() As String
            Get
                Return gongchen
            End Get
            Set(ByVal value As String)
                gongchen = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
           Public Property 螺距() As String
            Get
                Return luoju
            End Get
            Set(ByVal value As String)
                luoju = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
         Public Property 拉应力() As String
            Get
                Return layinli
            End Get
            Set(ByVal value As String)
                layinli = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
           Public Property 预拉力() As String
            Get
                Return yulali
            End Get
            Set(ByVal value As String)
                yulali = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
          Public Property 剪应力() As String
            Get
                Return jianyinli
            End Get
            Set(ByVal value As String)
                jianyinli = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
         Public Property 压应力() As String
            Get
                Return yayinli
            End Get
            Set(ByVal value As String)
                yayinli = value
            End Set
        End Property
        <Category("5螺栓规格参数")> _
     Public Property 孔径() As String
            Get
                Return d0
            End Get
            Set(ByVal value As String)
                d0 = value
            End Set
        End Property
     
    #End Region

    End Class
    '加拉菜单

    Public Class StrListAttribute
        Inherits Attribute

        Private theList As String()

        Public Sub New(ByVal list As String())
            theList = list
        End Sub

        Public ReadOnly Property List() As String()
            Get
                Return theList
            End Get
        End Property
    End Class
    在form1声明中加如下两句
    Inherits System.Windows.Forms.Form
     Dim oDemo As New Mshan
    然后拷贝如下代码
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    pgDemo.SelectedObject = oDemo
        End Sub
    现在的问题是,当螺栓型号、钢材牌号、螺栓材质发生变化时,其它参数也会相应变化
    谢谢高手解决,本人找了很多资料不能解决

    2009年9月6日 8:59

答案

  • 你的每个属性都是独立的啊?
    如果你要加计算出来的属性,在Get里面计算就行了。计算属性不需要保存到XML。


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年9月6日 13:14
    版主

全部回复

  • 你的每个属性都是独立的啊?
    如果你要加计算出来的属性,在Get里面计算就行了。计算属性不需要保存到XML。


    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    2009年9月6日 13:14
    版主
  • 我其实是想在PropertyGrid1控件中,显示相关XML的内容当螺栓型号、钢材牌号、螺栓材质发生变化时,其它参数也会相应变化。有可能我会调用其它的参数进行某些计算。
    不是要存到XML
    能不能说具体的实例操作,呵呵,不然还是不明白
    2009年9月6日 14:41
  • 你好!
         你可以在Get或Set里写相应的计算逻辑。
    周雪峰
    2009年9月7日 4:33
    版主
  • 计算不是后期调用的,这个只是怎么查询。

    2009年9月7日 23:59