Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么图形表单没有在我的VB.net窗口表单应用程序中完成其所有UI的显示?_Vb.net - Fatal编程技术网

为什么图形表单没有在我的VB.net窗口表单应用程序中完成其所有UI的显示?

为什么图形表单没有在我的VB.net窗口表单应用程序中完成其所有UI的显示?,vb.net,Vb.net,当我的应用程序启动时,主窗体的load事件调用start_graph_thread(),这将为绘制图形的工作窗体启动execloop run_graph_management()。run_graph_management()等待处理请求的信号,以执行调整工作窗体大小之类的操作 问题是,在启动时,worker窗体会显示,但不会完全显示其所有UI,然后对大小调整没有响应。主窗体还可以,我可以移动它并调整它的大小 鼠标悬停在图形窗体上时显示沙漏 Public Class Antenna_Window_

当我的应用程序启动时,主窗体的load事件调用start_graph_thread(),这将为绘制图形的工作窗体启动execloop run_graph_management()。run_graph_management()等待处理请求的信号,以执行调整工作窗体大小之类的操作

问题是,在启动时,worker窗体会显示,但不会完全显示其所有UI,然后对大小调整没有响应。主窗体还可以,我可以移动它并调整它的大小

鼠标悬停在图形窗体上时显示沙漏

Public Class Antenna_Window_Template

. . .


' This is called when main window loads at boot-time.
Public Sub start_graph_thread()
    Me.graph_Thread = New Thread(Sub() Me.run_graph_management())
    Me.graph_Thread.Start()
End Sub

sub run_graph_management()
    static dim I_color as Color, Q_color as Color
    ' Signal graph management thread:
    signal_resize += 1
    antenna_graph_interface(antenna_window_index).graph_action_request_ManualResetEvent.Set()

    thread.Sleep(0)

    ' Threads EXEC LOOP:
    Do
        ' Wait for communication thread to hand-off block of samples for this antenna, or config signal from Main UI :
        ''''''''''''''   A W A I T   S I G N A L   '''''''''''''''
        ' Check for signals from other threads:
        antenna_graph_interface(antenna_window_index).graph_action_request_ManualResetEvent.WaitOne()       ' await signal
        antenna_graph_interface(antenna_window_index).graph_action_request_ManualResetEvent.Reset()     ' reset signal
        ' Another thread just signalled this graph thread to do something.  Go find out what:

        if signal_resize <> prev_signal_resize                                       ''''''''''''''''   R E - S I Z E   ''''''''''''''''
            prev_signal_resize = signal_resize

            ' Resize chart UI control:
            tad_x = 20
            tad_y = 20
            Me.TabControl_antenna_window.Width = Me.Width - 5
            Me.Chart_antenna_window.width = Me.TabControl_antenna_window.Width - tad_x

            Me.TabControl_antenna_window.Height = Me.Height - 40
            Me.Chart_antenna_window.height = Me.TabControl_antenna_window.Height - Me.Chart_antenna_window.Top - tad_y
        End If

        ' . . .  several other flags are checked

        loops += 1

        Application.DoEvents()    ' DoEvents method does not call the Thread.Sleep method.
    Loop
End sub
公共类天线\u窗口\u模板
. . .
'当主窗口在引导时加载时调用此函数。
公共子开始图线程()
Me.graph\u Thread=新线程(Sub()Me.run\u graph\u management())
Me.graph\u Thread.Start()的
端接头
子运行图管理()
静态暗I_颜色作为颜色,Q_颜色作为颜色
'信号图管理线程:
信号_resize+=1
天线图形界面(天线窗口索引)。图形操作请求手动重置事件。设置()
线程睡眠(0)
'线程执行循环:
做
'等待通信线程传递此天线的样本块,或主UI的配置信号:
A W A I T S I G N A L
'检查来自其他线程的信号:
天线\图形\接口(天线\窗口\索引)。图形\操作\请求\手动重置事件。WaitOne()'等待信号
天线图形界面(天线窗口索引)。图形操作请求手动重置事件。重置()重置信号
'另一个线程只是向这个图形线程发出做某事的信号。去看看:
如果信号调整上一个信号调整R E-S I Z E
上一个信号大小=信号大小
'调整图表UI控件的大小:
tad_x=20
tad_y=20
Me.TabControl\u antenna\u window.Width=Me.Width-5
Me.Chart\u antenna\u window.width=Me.TabControl\u antenna\u window.width-tad\u x
Me.TabControl\u antenna\u window.Height=Me.Height-40
Me.Chart\u antenna\u window.height=Me.TabControl\u antenna\u window.height-Me.Chart\u antenna\u window.Top-tad\y
如果结束
' . . .  检查其他几个标志
循环+=1
Application.DoEvents()的DoEvents方法不调用Thread.Sleep方法。
环
端接头

除了UI线程外,您不使用任何线程上的控件。如果您的UI出现问题,这就是原因。您可以处理需要在辅助线程中显示的数据,但当您需要实际修改控件(包括显示数据)时,您需要封送回UI线程。我想你得读点书,我完全理解。今天早上在健身房做了一些深入的思考,意识到了“我的方式的错误”。杰姆辛尼,非常感谢你的证实。我今天把我的解决方案做好后再发布。