C# 无法显式调用运算符或访问器和静态

C# 无法显式调用运算符或访问器和静态,c#,setter,C#,Setter,我有两个愚蠢的问题: 第一个: 我已经问过这个问题了,我真的很抱歉再次问这个问题(因为有很多关于它的帖子,所以更是如此),但现在我真的不明白为什么会发生这种情况,即使我每隔一篇都读一次,下面是我的代码: public class PageTitre { ... public void situation(string s) { onglet.get_Range("C11").Value = "(" + s + ")"; } } public class

我有两个愚蠢的问题:

第一个:

我已经问过这个问题了,我真的很抱歉再次问这个问题(因为有很多关于它的帖子,所以更是如此),但现在我真的不明白为什么会发生这种情况,即使我每隔一篇都读一次,下面是我的代码:

public class PageTitre {
    ...
    public void situation(string s) {
        onglet.get_Range("C11").Value = "(" + s + ")";
    }
}

public class PPE_Process {

    public static PageTitre pageTitre;

    public static void MainProcess() {
        ...
        pageTitre = new PageTitre();
        ...
    }
}

public partial class PPE_Ribbon {
    private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
    {
        PPE_Process.pageTitre.situation(SituationEditBox.Text);
    }
} 
我还尝试过其他一些方法,比如将情境作为
PageTitre
的变量,使用
get
set
,以及

private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
    {
        PPE_Process.pageTitre.set_situation(SituationEditBox.Text);
    }

但没有任何效果,出现相同的错误:无法显式调用运算符或访问器

我想是静态的
有问题吧
?如果是这样,我的第二个问题是:

第二个:

我读了很多关于它的文档,但我真的不明白“静态”的用途是什么。。。这只是为了我们不能在类之外更改值,还是类似的?那么,如果我去掉代码中所有的
static
,它真的会改变什么吗

再一次,我很抱歉你不得不一次又一次地回答这个问题,但如果这与我的代码直接相关,而不是有人回答其他人关于其他随机代码的问题,我会理解得更好,因为其他随机代码的问题与我的不同/

编辑以添加更多信息:

.Value
.get\u Range
应该不会有任何问题,因为它适用于代码的其他部分,但是 对于
.Value
,以下是Visual Studio提供的信息:

无效范围.set_值([object RangeValueDataType=System.Type.Missing],[object Value=System.Type.Missing])

对于
.get\u Range
:Excel.Range\u工作表.get\u Range(对象Cell1,[object Cell2=System.Type.Missing])


对于
static
,我仍然不能真正理解所有这些“实例”的事情,但我会尝试看得更多,并在这个论坛中添加另一个问题,如果我在这之后仍然不理解的话。

对于你的第一个问题:我看不出你调用
方法的情况有任何问题,可能问题在于方法中的语句(
get\u Range(“C11”)


关于你的第二个问题:当你创建一个变量/属性/方法
static
,这意味着它独立于类的任何实例(对象)。否则,如果没有
PPE_进程的实例,您将无法访问属性
PPE_进程.pageTitre
,好的,我的代码中没有任何更改,但现在它可以与

private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
{
    PPE_Process.pageTitre.situation = SituationEditBox.Text;
}

所以。。。我不知道,这可能是我的解决方案的构建有问题,但这很幸运:)

如果您有两个问题,请分别提问。可能来自“onglet.get_Range(“C11”).Value”您能更新详细信息吗?错误看起来像Value是一个方法,但如果没有详细信息就很难判断,如果Value是一个方法,则应该使用.Value()调用它
private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e)
{
    PPE_Process.pageTitre.situation = SituationEditBox.Text;
}