|
You must fill the DataGrid on the UI thread, so if that is what is taking the time, threading won't help. If the other work is taking an appreciable amount of time, then BackgroundWorker is a good choice.
This might help: http://www.albahari.com/threading/part3.aspx#_BackgroundWorker[^]
Nick
----------------------------------
Be excellent to each other
|
|
|
|
|
if you fill the Datagridview row by row then it's will take a while but it's easy
1- Get the DataTable rows count
2- Progress Max Value = row Count
3- on every row you add by manual Incearse the progressbar value
here is a sample :
int RowCount = 100;
int AddRow = 0;
private void button3_Click(object sender, EventArgs e)
{
progressBar1.Maximum = RowCount;
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < RowCount; i++)
{
AddRow = i;
backgroundWorker1.ReportProgress(AddRow);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
}
P.S :
I would never add row to datagrid manually I would use DataSource properties
I know nothing , I know nothing ...
|
|
|
|
|
This doesn't address your exact problem - but if you do decide to use a BackgroundWorker and a ProgressBar - my ProgressWorker[^] article may be of use.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn) Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia) Why are you using VB6? Do you hate yourself? (Christian Graus)
|
|
|
|
|
How can I forward a port in a router programmatically with C#?
Is it possible?
|
|
|
|
|
With UPnP or NAT-PMP (depending on the router) or neither (in some cases)
|
|
|
|
|
I have a datatable and I need to create a csv file with its contents. Can someone show me an example of how to do it please? Thanks for your time.
Regards,
John
|
|
|
|
|
Here
I know nothing , I know nothing ...
|
|
|
|
|
Hi
My form has a few Tabs. Each Tab has a DataGridView on it.
Using the arrow keys switches between tabs. This stops when the user clicks on any cell i a gridview, in which case the arrow keys move around the grid.
Is there any way I can force this mode on entry into a tab?
I have tried setting the top left cell of the gridview to Selected = true, but this doesn't help.
Thanks,
Nigel
|
|
|
|
|
Try setting the focus on the tabpage.
जय हिंद
|
|
|
|
|
Tried. Doesn't help.
Tried setting focus to the gridview, doesn't help.
|
|
|
|
|
How are you managing the tab page change on arrow key press?
You will need to cancel the KeyPress for the GridView and get that code for execution.
जय हिंद
|
|
|
|
|
I was hoping that there would be an easier solution!!
In other words I must "grab" the arrow-key-presses and make them do what I want them to do, not the default action.
Thanks.
|
|
|
|
|
Override ProcessCMDKey method. It will let you do that.
जय हिंद
|
|
|
|
|
|
Nigel Mackay wrote: Ta
जय हिंद
|
|
|
|
|
Thanks
|
|
|
|
|
Oh..not a problem.
जय हिंद
|
|
|
|
|
Ta = common British expression = "Thank you"
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Hello,
How can i declare a string in a loop that the name of the variable will be changed for example according the index of the loop. For example if i will do:
for(i=1;i<5;i++)
string k[i]="something";
it will make me 4 string variables:
k1,k2,k3,k4
I mean the name itself will be changed.
I can't use arrays instead.
|
|
|
|
|
You can't, variable names are declared at compile time.
Why you can't use an array?
|
|
|
|
|
because i want to use it as adding columns to a datagridview.
And i need it to be in loop because i take those variables from a regkeys i save before.
Can i save antire array as regkey , then read it from the registry and then add it as column names to the datagridview?
|
|
|
|
|
Use a dictionay instead.
Please remember to rate helpful or unhelpful answers, it lets us and people reading the forums know if our answers are any good.
|
|
|
|
|
If what you want to do is set the name of the column, or set its headertext then you can do this in the way you first suggested.
string columnBaseName =
for (int i = 1; i < 3; i++)
{
DataGridViewTextboxColumn newColumn = new DataGridViewTextboxColumn();
newColumn.Name = columnNameBase + i.ToString();
newColumn.HeaderText = columnNameBase + i.ToString();
this.dataGridView1.Columns.Add(newColumn);
}
Hope this helps.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Or a dictionary...
Dictionary<int, string> getString;
for access using the int value, or
Dictionary<string, string> getString;
for access using a name (e.g. "myName"+i.tostring() )
There are three kinds of people in the world - those who can count and those who can't...
|
|
|
|
|
there is another ways to do that for example :
System.Collections.ArrayList arr = new System.Collections.ArrayList();
for (int i = 0; i <= 10; i++)
{
arr.Add(i);
}
Console.WriteLine(arr[3]);
I know nothing , I know nothing ...
|
|
|
|