|
|
I have an ArrayList of objects, all of which implement a known interface. However, I can't figure out how to get an interface to an object returned from the ArrayList:
IMyInterface I = (IMyInterface)(MyArrayList[3]); // Invalid cast exception.
I can't just cast MyArrayList[3] to a class that implements IMyInterface, since the objects may be of different classes.
Can somebody give me a hint?
Thanks.
|
|
|
|
|
Are you sure the item at MyArrayList[3] is an instance of an object that implements IMyInterface ?
You should be able to cast by just writing (C#):
IMyInterface iface = (IMyInterface)myArrayList[3];
You can check if an object implements a certain interface as follows (this assumes testObject is the object you're testing for it's definition):
if (!typeof(IMyInterface).IsAssignableFrom(testObject))
throw new ApplicationException("Object {0} doesn't support IMyInterface", testObject.GetType());
IMyInterface iface = (IMyInterface)testObject;
iface.SomeMethod();
|
|
|
|
|
I found the problem.
I had defined the same interface in two different assemblies and assumed this would be the "same" interface, but it is not. I moved the interface definition to a common assembly and the cast now works like I though it should.
Thanks,
Daniel
|
|
|
|
|
You can also use "as" key word: casts if possible, otherwize returns null:
Object o;
IMyInterface mi = o as IMyInterface;
if (mi==null)
...
Jonathan de Halleux.
www.dotnetwiki.org
|
|
|
|
|
What in the HELL is wrong with this code:
<br />
Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load<br />
Dim Document As New CrystalDecisions.CrystalReports.Engine.ReportDocument<br />
<br />
#If DEBUG Then<br />
Document.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) & "\..\Reports\" & m_ReportSource & ".rpt")<br />
#Else<br />
Document.Load(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) & "\Reports\" & m_ReportSource & ".rpt")<br />
#End If<br />
Dim LogOnInfo As CrystalDecisions.Shared.TableLogOnInfo = <font style="color: blue;">Document.Database.Tables(0).LogOnInfo</font><font style="color: green;">
</font><br />
LogOnInfo.ConnectionInfo.Password = "*******"<br />
Document.Database.Tables(0).ApplyLogOnInfo(LogOnInfo)<br />
<br />
CrystalReportViewer1.ReportSource = Document<br />
End Sub<br />
Kyosa Jamie Nordmeyer - Cho Dan
Portland, Oregon, USA
|
|
|
|
|
Is there an easy way to change the default on the browsable attribute for the property grid? I have a derived class with a few members and a base class with a large number of members. If I set an object of the derived class to display in the property grid, I would like to hide the inherited members. Currently, to hide the inherited memebers I need to define them in the derived class and set the browsable attribute to false. Is there a way to default the browsable attribute to false?
|
|
|
|
|
Just add the BrowsableAttribute :
[Browsable(false)]
new public Font CaptionFont
{
get { return base.CaptionFont; }
set { base.CaptionFont = value; }
}
|
|
|
|
|
Hi, anyone know where I can find a graphical chart over the classes and namespaces of the .NET framework? Something similar to what exists for MFC library, see link below. Thanks, Patric
Hierarchy Chart
|
|
|
|
|
|
Hi
I am trying to test the time it takes my .NET application to load 1st time. When the application is called the 1st time, the JIT compiler generates a native code. I am looking for a way to clear the cache which is holding thie native code, so I can measure the time the app takes to load accurately.
Any tips would be welcome!
thank you.
|
|
|
|
|
You try writing an unmanaged loader to instrument the load time of the app by binding to a specific runtime (not the current one) and launching the app. See Hosting the Common Language Runtime for more information. Also check out the Unmanaged API Reference, especially CorBindToRuntimeEx
This may not work, as I'm not sure how different instances of the load time of the newly hosted runtime is affected by an already loaded instance of a runtime version.
Good luck!
|
|
|
|
|
Setup:
I am using several multi-selection listboxes on various pages of a tab control on a Windows form.
Problem:
After leaving a tab page that has one of the multi-selection listboxes on it, then returning to the initial page, all multiple selections in the listbox are lost except the topmost selection.
Potential solution:
Save the listbox selections on a tab page change (or update the collection constantly) and reset the listbox when the tab page is reactivated.
Question:
Does anyone have a better solution?
|
|
|
|
|
Hi,
I'm struggling with some code:
Dim ico As New Icon("c:\copy.ico")
Dim bmp As Bitmap()
bmp = ico.ToBitmap
bmp.MakeTransparent(bmp.GetPixel(0, 15))
bmp.Save("c:\copy.gif", Imaging.ImageFormat.Gif)
the copy.ico is the standard icon from office with on the lower left (in vs.net) the color rgb: 0 128 128. I'm trying to set this color as transparent before converting it to a gif image. Unfortunately it always turns out to be a black backgroundcolor instead of transparent. When I leave the Imaging.ImageFormat.Gif the image has a color of grey (still not transparent) and it can't be opened with photoshop (it opens when I put the ImageFormat back to gif).
Does anyone have any experience with solving this problem?
Thx, Kris.
|
|
|
|
|
We have an application that is running under .net. Most of the code is in VB.net, however, we have several cobol programs that are compiled for .net using fujitsu cobol. We are using cobol because we have several sites that we support and most sites are mainframe, so we use a case probduct that generates these core translate programs for the various platforms. When we run these programs that have been compiled for .net via Fujitsu cobol, we are getting a SQLState error of 9999B with SQLCODE error of 999999800 on an insert when we send alot of data through these programs. When we get this error, we loose the record. We are using ODBC and using a microsoft ODBC driver for SQL Server. I haven't been able to find anything on what these error codes mean. I've tried displaying the SQLMSG but there is nothing in that field when this error occurs. Has anyone seen this, and if so, do you know what it means?
|
|
|
|
|
I am trying to figure out mimic this code in the visual C++ .net anyone know how to attach this?
void GoFullScreen( HWND hwnd,int FullScreen, RECT *sizerect, int x, int y )
{
int cx, cy;
HDC DC = GetDC( NULL );
if( x == 0 || y == 0 )
{
cx = GetDeviceCaps( DC,HORZRES ) + GetSystemMetrics( SM_CXBORDER ) + 1;
cy = GetDeviceCaps( DC,VERTRES ) + GetSystemMetrics( SM_CYBORDER ) + 1;
}
else
cx = x; cy = y;
ReleaseDC( 0, DC );
if( FullScreen )
{
// Remove caption and border
SetWindowLong(hwnd, GWL_STYLE,
GetWindowLong(hwnd, GWL_STYLE) & ((~WS_CAPTION | WS_BORDER )));
// Put window on top and expand it to full screen
SetWindowPos( hwnd, HWND_TOPMOST, -(GetSystemMetrics( SM_CXBORDER ) - 1 ),
-( GetSystemMetrics( SM_CYBORDER ) - 1 ), cx+2,cy+2, SWP_NOZORDER );
}
else
{
SetWindowLong( hwnd, GWL_STYLE,
GetWindowLong( hwnd, GWL_STYLE ) | WS_CAPTION | WS_BORDER );
SetWindowPos( hwnd, HWND_NOTOPMOST, sizerect->left, sizerect->top,
sizerect->right-sizerect->left, sizerect->bottom-sizerect->top, SWP_SHOWWINDOW );
SetWindowLong( hwnd, GWL_STYLE, GetWindowLong( hwnd, GWL_STYLE ) | WS_CAPTION |
WS_BORDER | WS_SYSMENU | WS_GROUP | WS_DLGFRAME );
SetWindowPos( hwnd, HWND_TOPMOST, -GetSystemMetrics( SM_CXBORDER ) - 1,
-GetSystemMetrics( SM_CYBORDER ) - 1, cx+1+5,cy+1+30, SWP_NOZORDER );
}
}
Thanks,
Steve
|
|
|
|
|
I have found the following code here at the code project and it works fine. But, instead of displaying a MessageBox saying Already running I would like to bring the application that is already running back as the active application. I can't figure out how to do it.
CSingleInstance *si= new CSingleInstance("{6F21ABB2-9866-4b8e-8336-E6D96C300965}");
Form * MainForm = new Form1();
if(si->IsRunning())
{
MessageBox::Show(S"Already running");
MainForm->Show(); // does not work
}
else
{
Application::Run(MainForm);
}
Any ideas would be appreicated
Steve
|
|
|
|
|
Is there a better way of getting a Image 's format name (e.g., "Jpeg") than doing something like the following?
protected string GetImageFormatString (System.Drawing.Imaging.ImageFormat inFormat)
{
if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Bmp))
return "BMP";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Emf))
return "EMF";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Exif))
return "EXIF";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Gif))
return "GIF";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Icon))
return "ICON";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Jpeg))
return "JPEG";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.MemoryBmp))
return "MEMORYBMP";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Png))
return "PNG";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Tiff))
return "TIFF";
else if (inFormat.Equals (System.Drawing.Imaging.ImageFormat.Wmf))
return "WMF";
else
return "DUNNO!";
}
|
|
|
|
|
How about:
protected string GetFormatString(System.Drawing.Imaging.ImageFormat inFormat)
{
System.Drawing.ImageFormatConverter converter = new System.Drawing.ImageFormatConverter();
return converter.ConvertToString(inFormat);
}
I don't know whether it's just the light but I swear the database server gives me dirty looks everytime I wander past.
-Chris Maunder
|
|
|
|
|
That's beautiful. Thanks!
|
|
|
|
|
That's harsh David
|
|
|
|
|
Hi,
I am developing a Windows.Forms app. I am using a multi tier architecture with databinded strongly typed datasets . I am using a data access component called Facade where I have a method:
public Sub LoadCompany(ByVal companyID as Integer, ByRef ds as CompaniesDataSet)
ds.Clear()
...code to set the parameter in the select command
DACompanies.Fill(ds)
End Sub
It seems that ds.Clear() takes more and more time to complete , from a few miliseconds at start to 4-5 seconds after 100 method invokes.
Anyone has an answer to this?
Thank you,
Dan Bunea
|
|
|
|
|
I have seen other people complain about the same performance issue, namely here.[^]
|
|
|
|
|
Yes, I saw that too.
Unfortunately, I cannot use that simple solution, because I have very numerous bindings made to my DataSet.
Any other solution?
Thank you for your reply,
Dan
|
|
|
|
|
Since this seems to be a .NET Framework issue, I do not see how you can alter this behaviour without changing the structure of your code. Also, I do not know if this issue only arises on .NET v1.0 or not. You should check that, because .NET v1.1 had many perfomance and bug related improvements
|
|
|
|