不停息的翔龙 发表于 2015-5-8 08:39:00

控件加载文件流,提示错误!如图

执行此语句时, TextControl_record.Load(buffByte, 512)

iceman 发表于 2015-5-8 10:53:00

回复 1楼不停息的翔龙的帖子

问题已经查收,根据当前错误信息提示是在 TextControl 对象没有加载完成的时机调用了 TX 实例方法。请问当前的加载时机是?

我这边也会模拟1# 代码做测试,看能否重现问题。稍后反馈给你。

iceman 发表于 2015-5-8 11:08:00

回复 1楼不停息的翔龙的帖子

通过附件demo在 WPF Window.Loaded 事件中加载 byte() 字节流没有重现这个问题,关键代码如下:
    Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
      Dim filename As String = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\test.tx")
      Dim stream As FileStream = File.Open(filename, FileMode.Open)

      Dim bytes() As Byte = New Byte(stream.Length) {}
      stream.Read(bytes, 0, bytes.Length)

      Me.tx1.Load(bytes, TXTextControl.BinaryStreamType.InternalFormat)
    End Sub

详细请参考demo看能否解决你的问题,如果没有解决请提供更多调查信息给我们进一步研究:
VS2013 + VB.NET + .NET 4.0

不停息的翔龙 发表于 2015-5-8 14:08:00

tx控件在一个tabcontrol 的一个item页中,在此页,gotfous 事件中 加载文件流,提示上面错误

不停息的翔龙 发表于 2015-5-8 14:09:00

回复 3楼iceman的帖子

tx控件在一个tabcontrol 的一个item页中,在此页,gotfous 事件中 加载文件流,提示上面错误

iceman 发表于 2015-5-8 14:38:00

回复 5楼不停息的翔龙的帖子

修改了 3# demo,仍然没有重现问题:
关键代码:

    Private Sub TabItem_GotFocus(sender As Object, e As RoutedEventArgs)

      Dim filename As String = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\test1.tx")
      Dim stream As FileStream = File.Open(filename, FileMode.Open)

      Dim bytes() As Byte = New Byte(stream.Length) {}
      stream.Read(bytes, 0, bytes.Length)

      Me.tx1.Load(bytes, TXTextControl.BinaryStreamType.InternalFormat)

      stream.Close()
    End Sub


效果图:


Demo:

iceman 发表于 2015-5-8 14:42:00

回复 5楼不停息的翔龙的帖子

请您在 6# demo 基础上参考调查,如果没有解决问题,请在 Demo 基础上修改后发到论坛上我们调查。

经过长时间的论坛沟通,我们之前的沟通基本顺畅,感谢您长时间以来的支持和理解。

如果在发布问题是能够提供更多的调查信息,这样既能减少沟通次数,也能加快问题的处理。例如这个问题,如果您能在首次提问通知我们是使用了tab的gotfocus 事件出现问题,那么将对这个问题的推进起到很大的帮助。

谢谢

不停息的翔龙 发表于 2015-5-8 15:45:00

回复 7楼iceman的帖子

在 窗口的 load事件中,直接加 你tx那个item页.focus,也就是加载后直接跳到那页,出错

iceman 发表于 2015-5-8 16:50:00

回复 8楼不停息的翔龙的帖子

TX 有自己的 Loaded 标志位机制,所以需要在 tx loaded 事件中使用 Dispatcher.BeginInvoke 事件来加载字节流:

    Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
      tabControl1.Items(1).Focus()
    End Sub

    Private Sub TabItem_GotFocus(sender As Object, e As RoutedEventArgs)
    End Sub

    Private Sub tx1_Loaded(sender As Object, e As RoutedEventArgs) Handles tx1.Loaded
      tx1.Dispatcher.BeginInvoke(New Action(AddressOf LoadFile))
    End Sub

    Private Sub LoadFile()
      Dim filename As String = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\test1.tx")
      Dim stream As FileStream = File.Open(filename, FileMode.Open)

      Dim bytes() As Byte = New Byte(stream.Length) {}
      stream.Read(bytes, 0, bytes.Length)

      Me.tx1.Load(bytes, TXTextControl.BinaryStreamType.InternalFormat)

      stream.Close()

    End Sub


Demo:

不停息的翔龙 发表于 2015-5-8 17:28:00

回复 9楼iceman的帖子

不是加载一个类型的文档就完了,,在窗口LOAD里要加载判断N种类型的文档,是哪种 加载哪种,你这个在TX的load也写死了,即使往里传参数也很麻烦啊!!!!
页: [1] 2
查看完整版本: 控件加载文件流,提示错误!如图