|
baranils wrote: do you have a solution ?
Yes, use a tutorial or article or book. There are many articles here on CodeProject.
baranils wrote: Why such question ?
Good question, how about, because I know what I am doing and you don't? You like that reason?
led mike
|
|
|
|
|
Try
dtt.Rows[i][1] = addrID;
You can also use the ["TheNameOfTheColumn"] instead of [1], like so:
dtt.Rows[i]["AddressID"] = addrID;
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Thank You John
Yes I got it and you are right : using the field name avoid confusion or even mismatch when the user reorder column in a datagridview for example
However indexing using an ordinal can be faster and usefull sometime
|
|
|
|
|
baranils wrote: However indexing using an ordinal can be faster and usefull sometime
It may be a little faster, but not nearly as maintainable for the guy that follows you into the code.
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
Right !!
|
|
|
|
|
Is there any other way of updating forms in a thread safe way apart from the delegate/InvokeRequired trick?
I'm working on an app (RSS Reader) which has a separate thread for checking if new items appeared and updating context menus accordingly, can I acquire some sort of lock to a control or do I have to create UpdateContextMenuItem(ToolStripMenuItem menuitem, ToolStripItem subitem)-esque methods for each and every action that I may need to perform? I'm new to C#/.NET, and despite initial bias I was quite impressed how clean and well-designed it is, until now.
TIA,
Greg
|
|
|
|
|
Jergosh wrote: I'm new to C#/.NET
What about Object Oriented Programming and/or Design Patterns, are you new to those as well? What is your background?
Jergosh wrote: apart from the delegate/InvokeRequired trick?
Why is that a trick? It's an implementation of inter-thread communications, do you know of some way to communicate between threads that doesn't involve communicating between threads?
led mike
|
|
|
|
|
led mike wrote:
What about Object Oriented Programming and/or Design Patterns, are you new to those as well? What is your background?
I have experience with C, C++ and Python as well as have completed misc university courses (algorithms and data structures etc) but I don't see how that's relevant.
led mike wrote: Why is that a trick? It's an implementation of inter-thread communications, do you know of some way to communicate between threads that doesn't involve communicating between threads?
I'd say it's less standard than just acquiring lock, doing whatever we like with the object and then releasing it. Less convenient as well if I want, say, clear a menu and populate it with dynamic content as I have to write several helper methods. Apart from that, replacing
menuItem.DropDownItems.Clear();
with self-made
ClearDropDownMenu(menuItem) isn't particularly object-oriented (or at least doesn't look as if it was). Could we please get back to my initial question?
modified on Thursday, March 6, 2008 3:15 PM
|
|
|
|
|
Jergosh wrote: I'd say it's less standard than just acquiring lock
How does acquiring a lock switch your codes execution context to another thread?
Jergosh wrote: Could we please get back to my initial question?
Your initial question appears to be based upon a misunderstanding of some of the things that are involved in the answer to your question. The direction of my posts was based on the idea that you might consider it of value to gain an improved understanding of these rather than just be given a "do this" solution. If that's not the case then so be it.
led mike
|
|
|
|
|
Hi,
accessing a Control must be done by the thread that created the Control, normally the main
thread a.k.a. GUI thread. So other threads must SOMEHOW pass the GUI access actions to the
main thread. There are basically two ways to do that:
1. the Control.InvokeRequired/Invoke pattern
2. otherwise passing sufficient data to the GUI thread and have it access the Controls
(e.g. prepare a collection with new data, and have it processed by a Windows.Forms.Timer,
which always ticks on GUI thread!
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Luc Pattyn wrote: There are basically two ways to do that:
1. the Control.InvokeRequired/Invoke pattern
2. otherwise passing sufficient data to the GUI thread and have it access the Controls
(e.g. prepare a collection with new data, and have it processed by a Windows.Forms.Timer,
which always ticks on GUI thread!
Most helpful, many thanks
|
|
|
|
|
You're welcome.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
hey guys, im writing my own auto update component for my apps, it downloads a compressed archive (.gz) and i was wondering if anyone could recommend a good gzip library i can use to deflate the file and then copy the files.
|
|
|
|
|
How about the GZIPStream[^] class in System.IO.Compression namespace
only two letters away from being an asset
|
|
|
|
|
I'm having a problem using an unmanaged library from C#. The C++ sample app uses the following
<br />
typedef struct {<br />
char *filename;
char **paddr;
long *pbytes;
long *pbuflen;
} MEMIOSTRUCT;<br />
<br />
extern "C" { __declspec (dllimport) int WINAPI OUTRun(LPSTR, MEMIOSTRUCT **); }<br />
Okay now my C# app uses the following
<br />
<br />
[StructLayout(LayoutKind.Sequential)]<br />
public struct MEMIOSTRUCT<br />
{<br />
public string filename;<br />
<br />
public string data;<br />
<br />
public int dataSize;<br />
<br />
public int bufferSize;<br />
}<br />
<br />
[DllImport(@"owrm32c.dll", CallingConvention = CallingConvention.Winapi)]<br />
[return: MarshalAs(UnmanagedType.I4)]<br />
private static extern int OUTRun ( [MarshalAs(UnmanagedType.LPStr)] string s , [Out] MEMIOSTRUCT [ ] m );<br />
...<br />
MEMIOSTRUCT [ ] memioAlias = MemoryAliases.ToArray( );
int exitCode = OUTRun(command , memioAlias);<br />
</memiostruct>
When I run this I get a AccessViolationException. How am I implementing this wrong? BTW, I'm not a C++ guy so don't flame me if this is simple.
Thanks,
Dan
|
|
|
|
|
Hi,
I developed an application that opens an excel doc, and reads/displays its contents to a datagrid. How do I determine its start and end rows? I have tried some code but it does not give me the result I need. e.g. I tried:
//get start and end rows
Object[] startRow = {worksheet.get_Range("A4", "O4")};
Object[] endRow = {worksheet.Rows.get_End(XlDirection.xlDown)};
which did not work for me.
See below:
// loop through all rows of the spreadsheet and place each row in the datagrid.
for (int i = 4; i <= 50; i++)
{
Microsoft.Office.Interop.Excel.Range range = worksheet.get_Range("A" + i.ToString(), "Z" + i.ToString());
System.Array myvalues = (System.Array)range.Cells.Value2;
string[] strArray = ConvertToStringArray(myvalues);
DataGridViewRow row = new DataGridViewRow();
Object[] vals = strArray;
row.CreateCells(dgOutput, vals);
dgOutput.Rows.Add(row);
}
This displays the 1st 50 rows. I do not want to display 50 rows, I want to display all the rows in the spreadsheet. I need a variable that will replace the 50 (in the for loop) and represent the end-of-file.
Please help.
Mvelo Walaza
Developer
Telkom SA
|
|
|
|
|
int lastUsedRow = worksheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell, Type.Missing).Row;
|
|
|
|
|
Thanks man, it worked!!
Can you please recommend any sites I can get more info/code about Excel applications. I still have lots to do in this application like manipulating the data in the cells and inserting the data from the spreadsheet to an Oracle database table. Thanks again!
Mvelo Walaza
Developer
Telkom SA
|
|
|
|
|
|
I have associated a file extension with my application using the Setup Application in VS 2005 which allows me to click on a file and it automatically opens my application. The problem is when I click a link on a webpage that points to this file extension I am prompted to Save or Open the file. With MS Word/Adobe Acrobat it automatically opens the application when a document is clicked on.
How can I do this same thing for my application?
|
|
|
|
|
You would need to write an IE Add-on for your application. If you look at the Add-on manager for IE you should see one for Adobe, Adobe PDF Reader Link Helper.
only two letters away from being an asset
|
|
|
|
|
Hi guys,
Is it possible to open/load a form as child from inside of a TabPage of a parent form??? How can i do that?
Thanx.
|
|
|
|
|
Just do this:
MyOtherForm myOtherForm = new MyOtherForm();
myOtherForm.Show();
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997 ----- "...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001
|
|
|
|
|
It's the right methode to show up the myotherform bud not inside the tabpage of the other form
|
|
|
|
|
Move all of the controls of the child form into a panel class in a separate CS file. Put the panel in both the stand alone child form and as a tab page in the parent form.
Otherwise [Microsoft is] toast in the long term no matter how much money they've got. They would be already if the Linux community didn't have it's head so firmly up it's own command line buffer that it looks like taking 15 years to find the desktop.
-- Matthew Faithfull
|
|
|
|