C# 在RichTextBox中的函数内部使用IndexOf

C# 在RichTextBox中的函数内部使用IndexOf,c#,lua,indexof,C#,Lua,Indexof,我在试图弄清楚我要完成的事情的逻辑时遇到了一些困难。我想做的是找出如何使“事件”成为一个自动完成的项目,并存储它——稍后检查它是否存在,或者拼写是否错误 我用的是C 下面是一个流畅的解释: 功能: function Test(Event) end 现在,我想做的是使用: if(richTextBox1.Text.IndexOf("Event")) { // Store item via Auto Complete Item } 一旦它被存储,我真的不知道如何获取函数的其他部分。比如

我在试图弄清楚我要完成的事情的逻辑时遇到了一些困难。我想做的是找出如何使“事件”成为一个自动完成的项目,并存储它——稍后检查它是否存在,或者拼写是否错误

我用的是C

下面是一个流畅的解释:

功能:

function Test(Event)
end
现在,我想做的是使用:

if(richTextBox1.Text.IndexOf("Event"))
{ 
    // Store item via Auto Complete Item
}
一旦它被存储,我真的不知道如何获取函数的其他部分。比如,函数的内部会有多大,直到它到达一个“端点”

比方说,函数中有一个更大的部分:

function Test(Event)
    local k = 0
    if k == 0 then
        Event:SetValue(k)
    end
end
local event1 = GetEvent(event);
现在,当“事件”在“如果”语句中时,我如何获取它?我是否使用“LastIndexOf”

简言之:

  • 检查“事件”是否存在
  • 如果“事件”存在,则将其存储
  • 存储“事件”后,我们可以确保在写入最后一个“结束”后“函数”内没有错误

示例或书面文档将不胜感激。

对不起,我不确定下面的函数打算做什么,下面函数的第2行和第3行不需要在那里)

但是,如果我理解正确,并且您希望检索“Event”的值,那么您应该使用
return

function Test(Event)
    local k = 0
    if k == 0 then
        Event:SetValue(k)
    end
    return Event;
end
但正如我所说,该函数将非常无用,如下面的示例所示:

local Event = "ham sandwich";
function Test(Event)
    local k = 0
    if k == 0 then
        Event = k
    end
    return Event;
end

print(Test(Event));
0
这是因为,在函数中,k总是0

在写了很久之后,我又回到这里,我注意到我实际上没有回答你的问题

这是一个函数,它将存储事件并将事件传递给您,以便在最后一次“结束”后使用

local eventArray = {};
如果我们在这里将“eventArray”声明为本地(而不是在函数或代码块中),我们可以确信它可以在代码中的任何地方访问

function GetEvent(event)
    eventArray = eventArray or {};
    if ( event == nil ) then
        return;
    else
        table.insert(eventArray, event);
        return event;
    end
end
由于函数返回一个值,因此可以从函数外部执行此操作:

function Test(Event)
    local k = 0
    if k == 0 then
        Event:SetValue(k)
    end
end
local event1 = GetEvent(event);
“event1”现在将保存函数返回的值,当然,函数也会将其保存在表中,以便以后需要时使用

如果要存储事件,请确保表首先存在于函数的开头,即:eventArray=eventArray或{}

这可以防止意外删除表

代码说“表等于它自己,但如果它不存在,它等于一个表。”。如果您的表存在,则它是无害的,因为它始终接受第一个true语句(在本例中,它是确实存在的“eventArray”)

确保事件存在实际上很容易。如果事件不可能有布尔值,您还可以使用:If(notevent)then

我之所以这么说,是因为事件可能以false值存在。如果是这种情况,并且您使用了If(而不是event),那么它会将该语句视为true,因为event的值为false。这是因为false和nil不同于某些语言,它们不是一回事

请记住,“假”和“假”也不是一回事。第一个是布尔值(true或false),第二个只是一个表示“false”的文本字符串,与任何其他字符串一样处理

但为了安全起见,“if(event==nil)”通常是最好的

使用return命令函数停止,因为继续没有意义。因此,如果事件不存在,函数将提前结束


Hugh

不确定这是否有帮助,但为什么不先创建一个数组,每次运行此函数(测试(事件))时,您都会向数组中添加一个项?我可能有点误解,但您是否试图获取单词
事件的每个实例,并在分发最后一个“结束”后停止@Picrofo:我实际上尝试了一个列表,但我真的不知道如何在函数“end”结束后停止——因为如果使用“if”语句,您有多个端点。这有帮助吗@user1729639对不起,我不明白你的最后一句话。