gpt4 book ai didi

c# - 如何修复winform中的 "inaccessible due to its protection level"错误?

转载 作者:行者123 更新时间:2023-12-02 03:52:06 27 4
gpt4 key购买 nike

我有一个表单类

    partial class ProgressMainForm : Form
{
public ProgressMainForm()
{
InitializeComponent();
}
}

然后是一个使用该类并包含用户的所有功能的类

    public class ProgressForm
{
public ProgressMainForm myProgressForm;

public ProgressForm(string title)
{
myProgressForm = new ProgressMainForm();
myProgressForm.Text = title;
}

public void SetProgressBar(int min, int max)
{
....
}

然后我在我的项目中使用这个 ProgressForm 类,如下所示

            progresswindow = new ProgressForm("Replacing All Strings");

这样 progresswindow 仅包含与 ProgressForm 功能相关的成员,并且所有这些 Form 成员都对用户隐藏。

但有时我需要访问这些 Form 成员,例如当我需要 Invoke 方法时。

有没有办法让用户可以访问 ProgressForm 中的 myProgressForm 而无需将 ProgressMainForm 公开?

或者这种方法是错误的吗?

最佳答案

我认为您不应该直接使用表单。如果我正确地阅读了您的设置,您希望在完成某些工作时显示进度指示器。 ProgressForm 应该公开设置计数器并递增它们的方法;当您在另一个线程上运行它时,表单操作应该从 ProgressForm 的方法内部完成。您的调用属于那里,并用合适的方法包装。如果您想更改 ProgressMainForm 的某些视觉属性,请将这些属性中继到 ProgressForm。

要恢复,调用代码除了设置进度边界、开始、设置当前百分比和停止之外,不应该知道 ProgressForm 做了什么。这样,如果您被要求将应用程序移植到另一个 UI 系统,您需要更改的代码量将大大减少。

关于c# - 如何修复winform中的 "inaccessible due to its protection level"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com