|
Hi,
if you want to sort in a special way, you need to create a class that implements IComparer,
which means it provides a method int Compare (Object x, Object y) where you first cast
x and y to the appropriate class, then perform the comparison the way you want it.
Example, assuming the collection holds instances of class Person:
class MyPersonComparer: IComparer {
int Compare(object x, object y) {
Person p1=(Person)x;
Person p2=(Person)y;
int diff=string.compare(p1.LastName, p2.LastName);
if (diff==0) diff=string.compare(p2.FirstName, p1.FirstName);
return diff;
}
}
BTW: you could embed the Compare method inside an existing class (e.g. Person itself).
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.
|
|
|
|
|
Thanks a lot Luc.
This is exactly i was looking for.
|
|
|
|
|
hi. i wonder how do i get all my Forms to be categorized into one folder in the vs solution explorer.. ???
e.g Folder1/ Form1.cs
then in the code where should i declare? e.g. when i add new forms. how it declared into the folder?
|
|
|
|
|
You can/move add them into any folder you like within the project. The important thing is the namespace which doesn't have to refer to the folder structure in any way.
|
|
|
|
|
hi i had move one of my form to a new created folder..
but when run it said form1.cs does not exist..
|
|
|
|
|
Is that folder visible in the project? Is the file still visible in Visual Studio Solution Explorer?
|
|
|
|
|
If you create forms(classes) inside existing folders in your solution their namespace is automatically created with the folder as part of it.
e.g. If you create an application called WindowsFormsApplication1, then create a folder called MyForms, then add a new form to that folder called Form2 - Form2's code will actually be
namespace WindowsFormsApplication1.MyForms
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
}
}
and the Form2.Designer.cs file will have
namespace WindowsFormsApplication1.MyForms
{
partial class Form2
{
You can of course edit the namespace to be whatever is appropriate in your situation - just make sure you do it the same in both the Form2.cs and Form2.Desgner.cs
My guess with your
angels777 wrote: form1.cs does not exist
is that the namespace being used to reference form1 from elsewhere is not the same namespace that your form1 resides in.
|
|
|
|
|
I am adding a web reference to a web service, and coding against that reference (as auto-generated). I would like to know if there is a way to modify the HttpRequest that is sent when I call the API wrapper that is generated for me when I build the web reference? I plan to transfer file information with the request without requiring the user to know how to segment & order the file. Thanks for any help,
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
Hello,
I'd like to export a "List<t> type" field of a class keeping it unmodifiable by accesses "from outside". Exporting a copy of the List could be a solution, but I'd like to do it avoiding the copy operation. I mean,
public class MyClass
{
private List<component> component_list= new List<component>();
public List<component> Component_list
{
get {
//copy operation
List<component> list = new List<component> (component_list);
return list;
}
}
}
Can I get the same behaviour retrieving not a copy but a reference to component_list ?
MyClass obj = new MyClass();
List<component> readonlyListRef = obj.Component_list;
readonlyListRef.Clear();
//I want to avoid this code to clear MyClass' member component_list.
I think that neither "readonly" nor "const" make what i want, because the list can be modified during the execution, not only at the construction-time of the MyClass object.
thanks !
|
|
|
|
|
So you are saying that doing private readonly Listcomponent_list = new List(); doesn't get the job done? I don't understand why that doesn't do what you want?
I'm going to become rich when I create a device that allows me to punch people in the face over the internet.
"If an Indian asked a programming question in the forest, would it still be urgent?" - John Simmons / outlaw programmer
|
|
|
|
|
Because he wants to allow outside access to the list.
|
|
|
|
|
Well .ToArray() will also copy it, but it's an option.
You could derive your own List (or a wrapper) that doesn't allow public modification.
|
|
|
|
|
First of all, check that "Ignore HTML tags in this message (good for code snippets)", or encode < and > in your generic list
I think you should be able to expose it as ReadOnlyCollection<Component>. As I understood from MSDN it does exactly what you want, provides read only wrapper around that collection (and does not make copy).
http://msdn2.microsoft.com/en-us/library/ms132474.aspx[^]
[ My Blog] "Visual studio desperately needs some performance improvements. It is sometimes almost as slow as eclipse." - Rüdiger Klaehn "Real men use mspaint for writing code and notepad for designing graphics." - Anna-Jayne Metcalfe
|
|
|
|
|
Upps!! Sorry about the tags
Hope to do it well this time.
I try it and I think you are right, ReadOnlyCollection<T> does what I want. I was looking for a keyword or an access modifier..., but this seems to be a good solution.
thanks dnh, and thank you all for your attention.
|
|
|
|
|
If you are working with a generic list and you want code outside your class to have access to a readonly version, you are in luck. You declare a property or method that returns a ReadOnlyCollection of the same type as your list and return the list using the AsReadOnly method. Here's a quick example:
private List<MyClass> _myList;
public ReadOnlyCollection<MyClass> MyList
{
get { return _myList.AsReadOnly(); }
}
|
|
|
|
|
Hi,
Using "AsReadOnly" method ReadOnlyCollection<MyClass> type property can be exported without having to declare and initialize a ReadOnlyCollection<MyClass> type object, so more simple way to do the same. I like it.
Anyway, I realize that the List object is ReadOnly but the objects that it contains are not. So I can't offer a Read-only access for my List of objects. It seems like I have to make my own wrapping code to export the objects with ReadOnly access too. Right?Another solution?
thanks a lot
|
|
|
|
|
I have developed an application that takes a photo. I have a fixed path that the photos are saved to. I am able to save just one and after that unless I restart the whole application I am not able to save to overwrite the file because it sees the file as being in use. Any idea how I can overwrite or delete file in use?
a novice
|
|
|
|
|
It sounds like the actual issue is that you're not actually closing the file when you're done with it.
|
|
|
|
|
yeah, what happens it I add other things like signature and name to the photo and same them as one image,I don't need to close the program after the process is complete. I have to be doing for a lot of photos.
a novice
|
|
|
|
|
You probably are not closing the file you previously opened for writing. If you are using the StreamWriter to write the contents, make sure you call Dispose after you're done with it. Or wrap it in a "using" block like
using (StreamWriter writer = new StreamWriter(...))
{
writer.blah();
}
|
|
|
|
|
Hi, there may be two issues:
1.
Most ways to load an image keep the image file open as long as the Image object is not
Disposed() off. The only exception I am aware of is when reading an image through
Image.FromStream()
Remedy: use FromStream() or make sure you call Dispose().
remark: I don't think it is sufficient to Dispose() of a PictureBox if it is the only
thing refering to the Image that got loaded from your file.
2.
When a file, any file, is freshly written chances are some other utility is investigating
it, prohibiting you from immediately renaming, deleting or overwriting it; candidate
utilities are abything that works in the background on new files, such as file system
indexers, and ativirus tools.
Remedy: retry a couple of times, 1 second apart.
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.
|
|
|
|
|
Hi all,
I'm trying to change the ForeColor and BackColor of each component on the form without having to call each on their name. Is there a way I can do this. I know that in C++ one can use dynamic_cast but what about C#
Thanks in advance
Regards,
The only programmers that are better that C programmers are those who code in 1's and 0's
Programm3r
My Blog: ^_^
|
|
|
|
|
foreach (Control myControl in this.Controls)
{
myControl.BackColor = Color.DarkGoldenrod;
}
|
|
|
|
|
Thanks you very much for the help, just one question, how can I get hold of the Color 'ControlDarkDark', I cannot find it in the Color class
Thanks again
Regards,
The only programmers that are better that C programmers are those who code in 1's and 0's
Programm3r
My Blog: ^_^
|
|
|
|
|
it's SystemColors.ControlDarkDark
|
|
|
|