首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

序列化的有关问题

2012-03-15 
序列化的问题我的程序有个主窗口,一个子窗口.点击主窗口则显示子窗口.在子窗口中实现图片选择,点击确定后

序列化的问题
我的程序有个主窗口,一个子窗口.点击主窗口则显示子窗口.在子窗口中实现图片选择,点击确定后进行序列化.子窗口有个显示按钮,点击后显示保存过的图片.在主窗口不关闭的情况下,能正常序列化,反序列化,当主窗口关闭后,再打开,在子窗口中点击显示,发现反序列化后什么结果也没得到.(保存的是图片路径).不知道为什么会这样,为什么和主窗口有关系.
程序如下:
Imports   System
Imports   System.IO
Imports   System.Collections
Imports   System.Xml.Serialization

Public   Class   shzh
        Inherits   System.Windows.Forms.Form
<Serializable()>   Public   Class   xlh_shzh           ' '需要序列化的类
                              Public   hyldPic   As   String
                              Public   hyldflag   As   Int16  
        End   Class

        Dim   mhyldlj   As   String
        Dim   hyldflag   As   Int16

        '选择图片
        Private   Sub   shz_hyldPicBt_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   shz_hyldPicBt.Click
                Dim   m_opfileDlg   As   New   OpenFileDialog
                Dim   jpg,   bmp,   gif,   pic,   wmf,   jpeg   As   String   '所选文件不为这些格式则告警
                jpg   =   "*.[jJ][pP][gG] "   '后缀为JPG或者jpg[因文件后缀不区分大小写]
                bmp   =   "*.[bB][mM][pP] "
                gif   =   "*.[Gg][Ii][Ff] "
                pic   =   "*.[Pp][Ii][Cc] "
                wmf   =   "*.[Ww][Mm][Ff] "
                jpeg   =   "*.[jJ][pP][Ee][gG] "
                hyldPicYl.SizeMode   =   PictureBoxSizeMode.StretchImage
                m_opfileDlg.AddExtension   =   True
                m_opfileDlg.Filter()   =   "所有文件|*.* "
                m_opfileDlg.CheckFileExists   =   True
                m_opfileDlg.CheckPathExists   =   True
                m_opfileDlg.ShowDialog()

                If   m_opfileDlg.FileName()   Like   jpg   Or   m_opfileDlg.FileName()   Like   bmp   Or   m_opfileDlg.FileName()   Like   gif   Or   m_opfileDlg.FileName()   Like   pic   Or   m_opfileDlg.FileName()   Like   wmf   Or   m_opfileDlg.FileName()   Like   jpeg   Then
                        If   m_opfileDlg.ShowDialog().OK   Then
                                mhyldlj   =   m_opfileDlg.FileName()
                                MsgBox(mhyldlj)


                                hyldPicYl.Image   =   System.Drawing.Bitmap.FromFile(mhyldlj)
                                hyldPicYl.Show()
                                hyldflag   =   2
                        End   If
                        m_opfileDlg.Dispose()
                Else
                        MsgBox( "所选文件非法! ")
                End   If
        End   Sub
        '显示图片
        Private   Sub   yhldCancelBt_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   yhldCancelBt.Click
                Dim   m_xlh_shzh   As   New   xlh_shzh

                Dim   myObject   As   XmlSerializer
                Dim   mySerializer   As   XmlSerializer   =   New   XmlSerializer(GetType(xlh_shzh))
                Dim   myFileStream   As   FileStream   =   _
                New   FileStream( "KZS_ShZh.xml ",   FileMode.Open)
                Dim   reader   As   New   System.XML.XmlTextReader(myFileStream)
                m_xlh_shzh   =   CType(mySerializer.Deserialize(reader),   xlh_shzh)
                myFileStream.Close()

                hyldPicYl.SizeMode   =   PictureBoxSizeMode.StretchImage
                hyldPicYl.Image   =   Image.FromFile(m_xlh_shzh.hyldPic)
                hyldPicYl.Show()
                MsgBox(m_xlh_shzh.hyldPic)
        End   Sub
        '选择图片后点确定
        Private   Sub   hyldSetBt_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   hyldSetBt.Click
                Dim   m_xlh_shzh   As   New   xlh_shzh
                m_xlh_shzh.hyldPic   =   mhyldlj
                m_xlh_shzh.hyldflag   =   2
                Dim   x   As   XmlSerializer   =   New   XmlSerializer(GetType(xlh_shzh))
                Dim   writer   As   TextWriter   =   New   StreamWriter( "KZS_ShZh.xml ")
                x.Serialize(writer,   m_xlh_shzh)


                writer.Close()
        End   Sub
End   Class
请各位大狭帮忙看看,我已经研究好几天了,也找不到原因

[解决办法]
( "KZS_ShZh.xml ") 改为 ( "d:\KZS_ShZh.xml ") 试试。

热点排行