Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3783440
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 19, 20262026-05-19T11:13:30+00:00 2026-05-19T11:13:30+00:00

Hey guys I have a datagridview with about 10 items. I want remove specific

  • 0

Hey guys I have a datagridview with about 10 items. I want remove specific items from the grid. Now while Ive managed to do that I also want to control the execution speed of the removal of each item i.e. I want it to be slow enough for the user to see each item being removed. I tried stopping the thread in each iteration like this

for (int i = dataGridView1.Rows.Count - 1; i <= 0; i--){
  if (dataGridView.Rows[i] == null){
    continue; 
  }

  if (dataGridView.Rows[i].Cells[3].Value.ToString().Contains("Remove")){

    // stop the thread
    System.Threading.Thread.Sleep(900);
    dataGridView1.Rows.RemoveAt(i);
  }
}

While this code does remove the items its stil fast and all the matching items are removed at once. I tried using a timer but with no luck is there anyway to achieve this?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-19T11:13:31+00:00Added an answer on May 19, 2026 at 11:13 am

    Possible cause of the problem:

    I think the problem here is that your for loop never leaves until all rows are deleted. That is, your program never gives the GUI (Winforms?) a chance to update itself until all rows are deleted.

    That’s why your Thread.Sleeps happen all after another (you’re still in your loop), and in-between those you schedule rows to be deleted. Once your loop ends, your GUI gets a chance to update itself. It sees several rows scheduled for deletion and removes them all at once.

    Possible solution:

    What you could do is create a background task that works off a queue of rows which are to be deleted. The background task waits some specified amount of time, then deletes the queue. On this step you will have to call back on the UI thread using something like dataGridView1.Invoke(...).

    Finally, you modify the loop you’ve shown to us such that in a first step, it fills the queue; after the loop, you start the background task.

    Example code:

    I’ll try to show some scratch example code. Note that this may not work out of the box, I haven’t checked it thoroughly for correctness.

    // the queue of rows that need to be deleted:
    var rowsToDelete = new List<DataGridViewRow>();
    
    // fill the queue:
    foreach (var row in dataGridView.Rows)
    {
        if (removeCriteriaMetBy(row) == true)
        {
            rowsToDelete.Add(row);
        }
    }
    
    // work off the queue:
    var queueWorker = new BackgroundWorker();
    queueWorker.DoWork += (sender, e) =>
        {
            foreach (var row in rowsToDelete)
            {
                // sleep per item:
                Thread.Sleep(900);
                // call back on the UI thread in order to modify the GUI control:
                dataGridView.Invoke(new Action( () =>
                    {
                        dataGridView.Rows.Remove(row);
                    }));
            }
        };
    queueWorker.RunWorkerAsync();
    

    This should work because your row-removing loop runs in the background, ie. parallel to the UI thread. That means that the UI thread doesn’t have to wait for your removal loop to finish. Whenever a row is scheduled for removal, the UI thread can respond in parallel. (The call to dataGridView.Invoke(someAction) essentially puts a message in the UI thread’s message queue saying, “Do this piece of work (someAction).”)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Hey guys i wrote a quick test. I want delete to call deleteMe which
Hey right now I'm using jQuery and I have some global variables to hold
hey guys, i'm getting an exception on the following inner exception: {Value cannot be
Hey so what I want to do is snag the content for the first
Hey, I've been developing an application in the windows console with Java, and want
Hey peoples, I've been studying Java for a couple of weeks, and have decided
Hey everyone, I'm using Virtual PC and working with a virtual hard disk (*.vhd)
Hey, I'm using Levenshteins algorithm to get distance between source and target string. also
Hey all, my Computational Science course this semester is entirely in Java. I was
Hey all. Newbie question time. I'm trying to setup JMXQuery to connect to my

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.