如何将我的类中的字符串连接到表单

时间:2013-02-28 04:56:12

标签: c# winforms compiler-errors

我一直在编写程序中的字符串代码:

string[] keywords = { "abstract", "as", "etc" };

并且它在我的代码之后使用它(在mainform.cs中):

for (int i = 0; i < keywords.Length; i++)
{
    if (keywords[i] == token)
    {
        // Apply alternative color and font to highlight keyword.
        rtb.SelectionColor = Color.Blue;
        rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
        break;
    }
}

但是我想为关键字创建单独的类(KeyWord.cs)并在mainform中声明它但这段代码不起作用:

KeyWord.cs:

namespace editor
{
    class KeyWord
    {
        string[] keywords = { "abstract", "as", "etc" };
    }
}

Mainform.cs:

string[] keywords;
for (int i = 0; i < keywords.Length; i++)
{
    if (keywords[i] == token)
    {
        // Apply alternative color and font to highlight keyword.
        rtb.SelectionColor = Color.Blue;
        rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
        break;
    }
}

错误说:

  

使用未分配的本地变量'keywords':

请注意,此代码在mainform中处于无效状态:

private void TextChangedEvent(object sender, EventArgs e)
{
}

我该怎么办?

2 个答案:

答案 0 :(得分:1)

欢迎使用Stackoverflow,您需要获取KeyWord类的实例,然后将其关键字字符串数组分配给Mainform.cs中本地声明的String[] keywords,例如:

     var keyboardCls = new editor.KeyWord();
     String[] keywords = keyboardCls.keywords;

        for (int i = 0; i < keywords.Length; i++)
        {
            if (keywords[i] == token)
            {
                // Apply alternative color and font to highlight keyword.
                rtb.SelectionColor = Color.Blue;
                rtb.SelectionFont = new Font("Courier New", 10, FontStyle.Bold);
                break;
            }
        }

编辑:

  

找不到类型或命名空间名称“KeyWords”。

namespace editor //&lt; - 删除命名空间或使其与frmMain.cs的命名空间相同,或在实例化new editor.KeyWord();时完全限定命名空间

我编辑了我的代码以显示最后一个选项。此外,如果KeyWord.cs与MainForm.cs位于不同的项目中,那么您将需要添加一个Reference。

答案 1 :(得分:0)

如果您只想调用该对象并且只有一个实例,请使用static关键字。无论哪种方式,您都必须在使用之前为其分配值。

string[] keywords = new string[3];

3是阵列的预定长度。如果您需要可变长度,请使用List&lt; T&gt;。不过,这只是为了帮助你。你要做的最好的事情就是开始阅读一些书籍或教程。