VS用C#写的程序,在引用里没有mscorlib,但是可以使用该程序集里的内容,怎么回事?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS用C#写的程序,在引用里没有mscorlib,但是可以使用该程序集里的内容,怎么回事?相关的知识,希望对你有一定的参考价值。

由于mscorlib是非常基础的程序集,VS以及编译器会自动包含进来的,对它有特别的关照~ 参考技术A mscorlib 这个是系统默认的 参考技术B 默认加入的

在 InputBox 上编写的 ListBox 中搜索单词(C# VS)

【中文标题】在 InputBox 上编写的 ListBox 中搜索单词(C# VS)【英文标题】:Search for word in ListBox written on InputBox (C# VS) 【发布时间】:2022-01-05 19:08:16 【问题描述】:

我有一个带有单词的 ListBox,我需要单击一个按钮来打开一个 InputBox,我可以在其中搜索一个单词,然后程序将运行 ListBox 并突出显示我在 InputBox 中写的单词(如果它在那里)。如果程序到达列表的末尾并且没有找到该词,那么我将得到一个消息框,说明我正在寻找的词不存在。我需要为这个程序使用某种循环。

我知道如何制作按钮、输入框和错误消息框,但不知道如何进行搜索和循环。

我在这里阅读了很多类似的问题,但我认为它们中的任何一个都不会返回我正在寻找的结果。

谁能帮帮我?或者将我重定向到带有答案的帖子?

这是为 Winforms 准备的。

【问题讨论】:

Winforms 还是 WPF? @aybe Winforms。抱歉没有提及,不知道 WPF 是一件事 从 UX 的角度来看 FWIW,你想要的方式让它对最终用户来说非常复杂。 @aybe 是的,我知道,但这是我在 HS 的信息应用课上的练习。不幸的是,我的老师不是一个很好的人。 看看我的回答是否有帮助。 【参考方案1】:

这应该会让你走上正轨,这几乎是不言自明的:

每当文本更改时 在列表中查找匹配项 选择它们

代码:

private void textBox1_TextChanged(object sender, EventArgs e)

    var textBox = sender as TextBox ?? throw new InvalidOperationException();

    var text = textBox.Text;

    if (string.IsNullOrWhiteSpace(text))
        return; // nothing to search for

    const StringComparison comparison = StringComparison.InvariantCultureIgnoreCase; // maybe change this

    // find items matching text

    var indices = new List<int>();

    for (var i = 0; i < listBox1.Items.Count; i++)
    
        var item = listBox1.Items[i];

        if (string.Equals(item?.ToString(), text, comparison))
            indices.Add(i);
    

    // select them in list

    if (!indices.Any())
        return;

    listBox1.SelectedIndices.Clear();

    foreach (var index in indices) 
        listBox1.SelectedIndices.Add(index);

当然,列表选择模式必须是多重的才能正常工作。

此外,如果没有匹配项,您需要清除选择,以免 UI 处于模棱两可的状态(未完成)。

【讨论】:

谢谢!它工作得很好,我只需要适应 InputBox 并插入错误消息。再次感谢! 干得好,欢迎您! 你真的不应该做别人的作业。我知道做这些小任务很有趣,但你不认为给 OP 一些提示让他/她继续工作会更好吗?看看meta.***.com/questions/334822/… 好吧,我故意不匹配这个问题,他得到了一个很好的提示,设法将它集成到他的设置中,希望他学到了一些东西而不是盲目地复制结果,我希望如此......我认为通过例子学习很好,这不是他们在学校应该做的吗?想象一下,如果我让你做一些面包,然后扔给你,面粉,水和一个烤箱,没有进一步的解释;你很可能会失败,更重要的是你会厌倦 IMO。

以上是关于VS用C#写的程序,在引用里没有mscorlib,但是可以使用该程序集里的内容,怎么回事?的主要内容,如果未能解决你的问题,请参考以下文章

vs做C#项目,怎么导入以前写的类文件,直接复制好像不行,不能引用

c#引用其它程序的程序集时报错

VS2008如何将C#写的Winform程序打包成安装包?

MSBUILD / csc:处理 x64 mscorlib 警告 1607 的最简洁方式

怎么在C#中添加用C语言开发的动态链接库dll文件(vs2010)?

C#未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, ……”中加载类型“……”。