解决 如何在福彩12选5走势图框删除不需要的项目

e3xpic

会员
已加入
2020年12月30日
留言内容
11
编程经验
Beginner
Heloo是新手,也是编程新手

我想知道
单击button1时如何在福彩12选5走势图框中删除不需要的项目

3.png


例如在这张照片中,我只想保留清单"good" word only

test - 好
test - very 好
test- ok 好


如果我单击button1,它将是这样

44.png


谢谢您帮忙 :)
 
Solution
谢谢4乌拉圭回合的帮助,我想我已经解决了我的问题。谢谢大家的帮助。



C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
         
         

            StringBuilder sb = new StringBuilder();
            {
                foreach (var item in comboBox1.Items)
                 
                {
                    sb.Append(item.ToString() +...

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
并且请注意,它也不能区分单词和复合单词。所以这个词"goodbye" and "hardgoods"也有可能被发现。
 

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
并且请注意,它也不能区分单词和复合单词。所以这个词"goodbye" and "hardgoods"也有可能被发现。

老实说,我不确定他到底想要什么,我只是想看看我是否可以写一些东西来删除包含一个单词的列表中的所有内容,这对于了解从索引中删除时的索引问题很有用。列表-以及如何更改索引。

这对我将来的项目可能很有用。
 

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
实际上是在困扰我如何删除所有不包含的单词"Good",我尝试了几种变体!取反代码,但意识到这很简单:

C#:
return !s.Contains("Good");

从此列表:

Test1
好2
好4
Test3
Test5

Just 好2 and 好4 are left.

Still not case sensitive and as noted will return any words that contain 好 wherever they appear in the word but feels 好 至 achieve the goal.

作为可实现的目标。

C#:
private static bool Contains(String s)
        {
            string word = "Good";
            word = word.ToLower();
            return !s.Contains(word);
        }

将所选单词置于较低位置。



C#:
lowerCase = Filler.Select(x => x.ToLower()).ToList();

comboBox1.DataSource = lowerCase;

也将福彩12选5走势图框放到小写字母。

仍然不知道这是否是OP所需要的,但是这是一个巧妙的小练习。
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
See the other variant of Contains():

它仍然不能解决您的子字符串问题,但至少可以解决区分大小写的问题。
 

e3xpic

会员
已加入
2020年12月30日
留言内容
11
编程经验
Beginner
谢谢大家,终于我得到了我想要的
但是代码不是很好,因为我尝试并错误地结合了多代码,checkedListBox,文本框,
在此代码中,我使用正则表达式


之前

2.png



单击button1之后

3.png


C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (object item in comboBox1.Items)
            {
                checkedListBox1.Items.Add(item);
            }

            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                checkedListBox1.SetItemChecked(i, true);
            }

            StringBuilder sb = new StringBuilder();

            foreach (object checkedItem in checkedListBox1.CheckedItems)
            {
                {
                    sb.Append(checkedItem.ToString() + Environment.NewLine);
                }

                textBox1.Text = sb.ToString();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            comboBox2.Items.Clear();

       
            var regex = new Regex(@"[\n].*- test");

            var vv = textBox1.Text;
            MatchCollection matches = regex.Matches(vv);
            foreach (Match match in matches)
            {

                comboBox2.Items.Add(match);
            }
        }
    }
}


如果您全都帮忙解决它,我非常感谢。再次感谢。
对不起,您的小姐明白我的错。
 

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
了解您实际要删除的数据类型以及其来源将很有用。

我在下面提供的代码实际上删除了"- test"在单个按钮中单击一个福彩12选5走势图框。

但是,如果要删除的实际数据变化更大,则代码可能需要与上面编写的代码一样复杂。

码:

C#:
List<string> myList = new List<string>();
        public Form1()
        {
            InitializeComponent();

            myList.Add("testing");
            myList.Add("testing");
            myList.Add("test-testing");
            myList.Add("test-test test");
            myList.Add("123 -测试");
            myList.Add("ABC -测试");
            myList.Add("random text -测试");

            comboBox1.DataSource = myList;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            myList.RemoveAll(Contains);

            comboBox1.DataSource = null;
            comboBox1.DataSource = myList;
        }
        private static bool Contains(String s)
        {
                return !s.Contains("- test");
        }

结果:

启动福彩12选5走势图框:

列出Full.jpg


按下按钮后:

清单Cut.jpg
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
@ e3xpic :您说过您想从福彩12选5走势图框中删除项目,但是在您发布的文章#25中,您实际上是从文本框中删除项目。

使用UI进行数据存储确实不是一个好主意。
 

e3xpic

会员
已加入
2020年12月30日
留言内容
11
编程经验
Beginner
了解您实际要删除的数据类型以及其来源将很有用。

我在下面提供的代码实际上删除了"- test"在单个按钮中单击一个福彩12选5走势图框。

但是,如果要删除的实际数据变化更大,则代码可能需要与上面编写的代码一样复杂。
如果您问我数据来自哪里,对不起,我无法告诉您更多信息,但是数据将来自随机名称,但是"- test "会一起放入combobox1.not我们或我通过手动添加,如您的代码(myList.Add("testing");) .
现在的问题是我找不到直接从combobox1中删除项目的代码,这就是为什么我将数据传输到textbox1的原因,因为文本框很容易删除该数据。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
现在的问题是我找不到直接从combobox1删除项目的代码
问题就在这里。您正在尝试"find"代码,而不是自己为之迷惑并尝试"write" code.
 

e3xpic

会员
已加入
2020年12月30日
留言内容
11
编程经验
Beginner
我的更新代码我添加新的正则表达式代码

= var regex =新的Regex(@"[\n].*- test");


= var regex =新的Regex(@"(.*?- test*)");

支持很多文字




C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (object item in comboBox1.Items)
            {
                checkedListBox1.Items.Add(item);
            }

            for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                checkedListBox1.SetItemChecked(i, true);
            }

            StringBuilder sb = new StringBuilder();

            foreach (object checkedItem in checkedListBox1.CheckedItems)
            {
                {
                    sb.Append(checkedItem.ToString() + Environment.NewLine);
                }

                textBox1.Text = sb.ToString();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            comboBox2.Items.Clear();

     
            var regex = new Regex(@"(.*?- test*)");

            var vv = textBox1.Text;
            MatchCollection matches = regex.Matches(vv);
            foreach (Match match in matches)
            {

                comboBox2.Items.Add(match);
            }
        }
    }
}
 
Last edited:

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
我的更新代码我添加新的正则表达式代码

= var regex =新的Regex(@"[\n].*- test");


= var regex =新的Regex(@"(.*?- test*)");

支持很多文字
我同意跳伞运动员的观点,即1,通过创建文本框和福彩12选5走势图框将数据存储在UI中是个坏主意,而2,这并不是必须的。

从上面获取代码:

C#:
public void button1_Click(object sender, EventArgs e)
        {
            comboBox1.DataSource = null;

            var regex = new Regex(@"(.*?- test.*)");
          
            StringBuilder sb = new StringBuilder();
            foreach (string item in myList)
            {
                sb.Append(item + Environment.NewLine);
            }
            string tested = sb.ToString();
            MatchCollection matches = regex.Matches(tested);
            foreach (Match match in matches)
            {
                comboBox1.Items.Add(match);
            }
        }

在单个福彩12选5走势图框中执行相同的操作。
 

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
另外,让您了解。

当我问数据来自ComboBox1的来源时,我不是说工作,上学等。我的意思是:

1.文本文件;
2.清单;
3. SQL数据库;
4. Excel文件;
5.数据表;

目前,我的答案是基于列表填充的福彩12选5走势图框...。但不知道您如何填充福彩12选5走势图框,很难说该答案是否正确。
 

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
我只是重新阅读了该线程,尽管尝试新代码很有趣,但我认为您早早就错过了建议 @jmcilhinney

查看您的申请步骤:

1.您收到数据。
2.您将数据放入福彩12选5走势图框。

您这样做,它不会神奇地出现在福彩12选5走势图框中,而是将其放在福彩12选5走势图框中。

为什么没有3个步骤?

1.您收到数据。
2.您删除不需要的项目。
3.您将数据放入福彩12选5走势图框。

然后,您有一个仅包含所需数据的福彩12选5走势图框。
 

e3xpic

会员
已加入
2020年12月30日
留言内容
11
编程经验
Beginner
谢谢4乌拉圭回合的帮助,我想我已经解决了我的问题。谢谢大家的帮助。



C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
         
         

            StringBuilder sb = new StringBuilder();
            {
                foreach (var item in comboBox1.Items)
                 
                {
                    sb.Append(item.ToString() + Environment.NewLine);
                }
     
                var regex = new Regex(@"(.*?- test*)");
                string tested = sb.ToString();
                MatchCollection matches = regex.Matches(tested);
                foreach (Match match in matches)
                {


                    comboBox2.Items.Add(match);



                }

            }
        }


    }
    }

但是如果我使用单个福彩12选5走势图框
会变成这样


Untitled.png
 

ConsKa

知名会员
已加入
2020年12月11日
留言内容
85
编程经验
Beginner
我知道英语不是您的母语,但是无论如何您似乎都不会阅读所写内容或对所写内容进行回复时,英语确实很难为您提供帮助。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
我再也无法绕过这个线程了。不需要该StringBuilder。不需要第二个福彩12选5走势图框。您可以直接过滤项目。请参见下面的代码:

C#:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace SimpleWinForms
{
    class TestForm : Form
    {
        public TestForm()
        {
            var flow = new FlowLayoutPanel()
            {
                FlowDirection = FlowDirection.TopDown,
                Dock = DockStyle.Fill,
                AutoSize = true,
            };

            SuspendLayout();
            flow.SuspendLayout();
            Controls.Add(flow);

            var comboBox = new ComboBox() { Width = 200 };
            flow.Controls.Add(comboBox);

            var btnPopulate = new Button() { Text = "Populate" };
            btnPopulate.Click += (o, e) => PopulateComboBox(comboBox);
            flow.Controls.Add(btnPopulate);

            var btnClean = new Button() { Text = "Clean" };
            btnClean.Click += (o, e) => CleanComboBox(comboBox);
            flow.Controls.Add(btnClean);

            flow.ResumeLayout(false);
            ResumeLayout(false);
        }

        Random _random = new Random();
        string[] _adjectives = { "large", "small", "glorious", "heavy", "light", "cursed" };
        string[] _colors = { "red", "orange", "yellow", "green", "blue", "indigo", "violet" };
        string[] _weapons = { "wand", "bow", "sword", "mace", "dagger", "hammer" };

        string GenerateRandomObject()
        {
            var adjective = _adjectives[_random.Next(_adjectives.Length)];
            var color = _colors[_random.Next(_colors.Length)];
            var weapon = _weapons[_random.Next(_weapons.Length)];

            return $"{adjective} {color} {weapon}";
        }

        string GenerateRandomTesSuffix()
            => _random.Next(100) > 50 ? " -测试" : "";

        void PopulateComboBox(ComboBox cmb)
        {
            var count = _random.Next(10, 20);
            for (int i = 0; i < count; i++)
                cmb.Items.Add(GenerateRandomObject() + GenerateRandomTesSuffix());
        }

        bool 接受Item(object item)
            => !item.ToString().EndsWith(" -测试");

        List<object> GetItemsToRemove(ComboBox cmb)
        {
            var itemsToRemove = new List<object>();
            foreach(var item in cmb.Items)
            {
                if (!AcceptItem(item))
                    itemsToRemove.Add(item);
            }
            return itemsToRemove;
        }

        void CleanComboBox(ComboBox cmb)
        {
            foreach (var item in GetItemsToRemove(cmb))
                cmb.Items.Remove(item);
        }

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new TestForm());
        }
    }
}

GetItemsToRemove() returns a list of objects that should be removed 从 the combobox. 什么 it does is iterate over the combobox items and calls 接受Item() 至 determine whether 至 keep the item or not. In my particular implementation, 接受Item() gets the string representation of the combobox item in question and checks 至 see if it ends with " -测试". If it does, then it does not consider it acceptable. CleanComboBox() just takes the results of GetItemsToRemove()和removes them 从 the combo box items collection.

Obviously, the implementation of 接受Item() can be as simple or as sophisticated as you want it 至 be. It could be a regular expression. It could be a switch statement. It could be a really long complicated call that passes the object into some AI for acceptance or rejection.

无论如何,这使我们回到了OP在他最初的帖子中想要的:福彩12选5走势图框中的数据被过滤到他可接受的值。
 
最佳 底部