0

我正在尝试 VB.Net 2010 中的一个小应用程序,并面临一个小问题。我的应用程序有两种形式 - 一种主要形式和一种次要形式。主窗体有一个进度条。辅助窗体也是如此。当应用程序启动时,只有主窗体可见。在这里,我将进度条值设置为某个百分比。接下来,我打开子窗体,我希望进度条反映与主窗体相同的值。我怎样才能做到这一点?我尝试在加载和显示方法中使用主窗体中的值设置子窗体上的进度条值。但它不起作用,子窗体的进度条出现零值。欢迎任何想法来做到这一点..

4

2 回答 2

0

此示例使用属性向您展示如何在第一次显示第二个 Forms ProgressBar 时更改它,以及如何从 Form1 更新它。在没有看到您的代码的情况下,我不知道您做错了什么,但是在我看到的大多数问题中,尤其是在 vb.net 中,问题是您正在处理第二种形式的 2 个不同实例,因此更改永远不会出现在哪里你期待他们。

表格1

Public Class Form1
    Dim frm2 As Form2
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        ProgressBar1.Value += 1
        If Not IsNothing(frm2) Then
            frm2.SetProgress = ProgressBar1.Value
        End If
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        frm2 = New Form2
        frm2.SetProgress = ProgressBar1.Value
        frm2.Show()
    End Sub
End Class

表格2

Public Class Form2
    Public Property SetProgress As Integer
        Get
            Return ProgressBar1.Value
        End Get
        Set(value As Integer)
            ProgressBar1.Value = value
        End Set
    End Property
End Class
于 2013-09-24T05:41:41.573 回答
0

你是怎么打开第二个窗体的,你是怎么得到主窗体的进度条值的?您需要一个公共方法/属性来访问主表单控件。例如,您可以执行以下操作:

在主窗体(MainForm)中:

    private void btnOpenChildForm_Click(object sender, EventArgs e)
    {
        ChildForm f = new ChildForm();
        f.Show(this);
    }

    public ProgressBar GetMyProgressBar() { return progressBar1; }

在第二种形式(ChildForm)中:

    private void ChildForm_Load(object sender, EventArgs e)
    {
        MainForm parent = this.Owner as MainForm;
        progressBar1.Value = parent.GetMyProgressBar().Value;
    }

如果你愿意,我可以给你发一个 VB.Net 版本

于 2013-09-24T05:48:48.057 回答