|
Don't fail inside of a constructor. It isn't good practice. Move failure prone code outside of the constructor and call it seperately to initilize the class. Also, Application.Exit is a bad way to exit your application. Any error that requires an exit should bubble up till it can be handled gracefully allow the application to then exit via normal channels.
A man said to the universe:
"Sir I exist!"
"However," replied the Universe, "The fact has not created in me A sense of obligation."
-- Stephen Crane
|
|
|
|
|
Problem is that during construction of your form, Application.Run(..) isn't executed yet as where are in the state of creating the form object that gets passed into. So you cannot exit what isn't running yet.
So either move the code into an event handler for the forms Load event as suggested by the others or even put the check for crucial files inside the main method before you call Application.Run(..) . Additionally I suggest using File.Exists which is much nicer than catching exceptions.
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook www.troschuetz.de
|
|
|
|
|
Ah, ok... the Load handler... I forgot all about that and didn't pick that up in the other posts ( I must have been to tired ).
Also, I was trying to find the File.Exists thing, but couldn't so appreciate that one too. Now I can do that before he exception. Only reason I used that was that was the only exception thrown by the Bitmap().
Patrick
Appreciate all the help and feedback guys. The learning curve is steep.
|
|
|
|
|
I had a similar problem using VS2005. I presume your program keeps running until an error is evoked because of the missing file?
I moved the try/finally block out of the initialize program section into the MainForm_Load section and then it worked as it was supposed to.
Glen Harvy
|
|
|
|
|
I was running this from inside the constructor which I wanted to abort if the file wasn't present. But it seems I'll have to wait till out of the constructor.
Thanks
|
|
|
|
|
Okay, this is pretty complicated so let me see if I can try to explain my problem.
First I have an enumeration:
Enum BracingMemberTypes As Integer<br />
FirstItem = 0<br />
Diagonal = 0<br />
Horizontal = 1<br />
Internal = 2<br />
SubDiagonal = 3<br />
SubHorizontal = 4<br />
SubInternal = 5<br />
TopDiagonal = 6<br />
BottomDiagonal = 7<br />
TopSubHorizontal = 8<br />
BottomSubHorizontal = 9<br />
LastItem = 9<br />
End Enum
I have a file called clsSection with this declaration:
Protected m_BracingMembers As New clsBracingMemberDictionary
In the same file I also have some properties. I'll only show a couple:
ReadOnly Property Diag() As clsBracingMember<br />
Get<br />
<br />
'10-Aug-2006 Changed to use the dictionary LLS (1 of 10)<br />
If m_BracingMembers(BracingMemberTypes.Diagonal) Is Nothing Then<br />
m_BracingMembers(BracingMemberTypes.Diagonal) = New clsBracingMember(Me, BracingMemberTypes.Diagonal)<br />
<br />
End If<br />
Return m_BracingMembers(BracingMemberTypes.Diagonal)<br />
End Get<br />
End Property<br />
<br />
ReadOnly Property TopDiag() As clsBracingMember<br />
Get<br />
'10-Aug-2006 Changed to use the dictionary LLS (2 of 10)<br />
If m_BracingMembers(BracingMemberTypes.TopDiagonal) Is Nothing Then<br />
m_BracingMembers(BracingMemberTypes.TopDiagonal) = New clsBracingMember(Me, BracingMemberTypes.TopDiagonal)<br />
End If<br />
Return m_BracingMembers(BracingMemberTypes.TopDiagonal)<br />
End Get<br />
End Property
I need to create a copy function so I can have two objects and compare them. This is what I have thus far:
For i As Integer = BracingMemberTypes.FirstItem To BracingMemberTypes.LastItem
If Not .BracingMembers(i) Is Nothing Then
m_BracingMembers(i).Copy(.BracingMembers(i))
End If
Next
Basically what I am doing is looking up the bracing information. There are different bracing configurations such as X. The problem is that in the X bracing, some of the types of the enumeration do not exist. It has a diagonal (0), horizontal (1) but once it gets to internal (2) I get the null reference object error which makes sense.
This is not my code, my boss wanted me to change the code using a dictionary object.
Any ideas how to fix this short of using if statements based on the bracing configuration?
Is there a real benefit to using dictionaries? (VB programming dictionaries before the jokes come in. )
-- modified at 17:48 Friday 11th August, 2006
|
|
|
|
|
|
D'oh!
Sorry about that!
|
|
|
|
|
Hello,
I am trying to create columns in a datagridview which will have couple of textcolumns and one ComboColumn.
I am trying to add a class to the combo column. This class contains an ID column and a description column. When the user selects the item in combo column i want to extract the ID from the selected object.
But after populating the grid with my class, and selecting the dropdown, I am getting an error
"System.ArgumentException: DataGridViewComboCell value is not valid".
I have no code written in any of the events in the grid.
Any help is highly appreciated.
Here is my code snippet
datagridview1.ColumnCount = 2;
DataGridViewComboBoxCell dgvCell=new DataGridViewComboBoxCell();
//clsCombo is my class which has a constructor ID and Description
clsCombo objCombo = new clsCombo("1", "Male");
dgvCell.Items.Add(objCombo);
objCombo.ID = "2";
objCombo.Description = "Female";
dgvCell.Items.Add(objCombo);
objCombo.ID = "3";
objCombo.Description = "Other";
dgvCell.Items.Add(objCombo);
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.Cells.Add(dgvCell);
datagridview1.Rows.Add(dgvRow);
Thanks
Siva
|
|
|
|
|
I've developed an application in C# that reads an Excel worksheet every second using Interop.Excel (Microsoft Excel 9.0 Object Library) (below is part of the code). This worksheet has many formulas and is also being fed by a DDE from another application.
It works fine for some hours but suddenly I receive the following error and Excel crashes:
Microsoft Excel - MySpread.xls: EXCEL.EXE - Application Error : The instruction at "0x301833e4" referenced memory at "0x12480010". The memory could not be "read".
I have the same spread being read by a VB6 application that uses Microsoft Excel 9.0 Object Library and it has never crashed, so I think the Interop.Excel is the problem here. Any hint?
Thanks.
public class Class1
{
public Class1()
{
}
private Excel.Application _excelApp = null;
private Excel.Workbook _myWorkbook = null;
private Excel.Worksheet _myWorksheet = null;
public void open()
{
_excelApp = new Excel.ApplicationClass();
// opens _myWorkbook and _myWorksheet
_myWorkbook= _excelApp.Workbooks.Open("MySpread.xls",
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
_myWorksheet = (Excel.Worksheet)_myWorkbook.Sheets["Sheet1"];
}
public bool readSpread()
{
// gets data from A7 to AR60
Excel.Range oRng;
oRng = (Excel.Range)_myWorksheet.get_Range("A7", "AR60");
if (oRng==null) return false;
object[,] data = (object[,])oRng.Value2;
// extracts each value
string sProduct;
double dbPrice;
for(int r=1; r<=data.GetUpperBound(0); r++)
{
sProduct = Convert.ToString(data[r,1]).Trim();
dbPrice = Convert.ToDouble(data[r,4]);
//(...)
}
return true;
}
}
|
|
|
|
|
I have a tab control and on that control I want to have a submit button displayed regardless of the tab I choose - the submit button is always on top in the client area.
Please point me to documents / example of doing this.
Steve
|
|
|
|
|
Maybe I am missing what you are saying but can't you just put the submit button outside of the tab control?
Cheers
Disgyza
Programmer Analyst
|
|
|
|
|
I could do that. The situation is that I have multiple tab controls for different functions and the submit button is for the associated tab control.
Maybe a better idea is to have a submit button on each tabs client area because that is the information that is to be processed. Is there a way to make the same button appear, drawn, on the tabs client area when the tab is selected?
|
|
|
|
|
I don't think there is a way to draw the same control, but you can link the event handler of each submit button to one handler method.
sas9491 wrote: the submit button is for the associated tab control
Then why again does it need to be on top?
-- modified at 15:24 Friday 11th August, 2006
Cheers
Disgyza
Programmer Analyst
|
|
|
|
|
Couple of thoughts: 1 to provide a consitant interface, 2 so I had one area in code that would respond to all of the tabs responses, and 3 to cut down on the amount of overhead used for controls.
Linking the events sounds like a good alternate solution. Thanks
-SS-
|
|
|
|
|
Wrap the tab and the button in a panel or blank control. Then you can have one object with all of them.
A man said to the universe:
"Sir I exist!"
"However," replied the Universe, "The fact has not created in me A sense of obligation."
-- Stephen Crane
|
|
|
|
|
is it possible for me to allow my windows application that i have developed to be able to access a database on my server????
kenny
|
|
|
|
|
I don't mean to sound flipant, but why would this not be possible?
When you create a database connection string you specify the server to connect to, among other parameters.
only two letters away from being an asset
|
|
|
|
|
Mark Nischalke wrote: I don't mean to sound flipant, but why would this not be possible?
Because Access isn't a real database server.
Mark Nischalke wrote: When you create a database connection string you specify the server to connect to, among other parameters.
Not when you connect to an Access database. Then you specify the physical path to the database file.
---
b { font-weight: normal; }
|
|
|
|
|
keroed_edmond wrote: to access a database
Notice access A database, not an Access database
only two letters away from being an asset
|
|
|
|
|
Yes, you are probably right. I read "access database" in the subject line, and assumed (as there is no other reference to something that looks like a database name) that it was about the Access database.
---
b { font-weight: normal; }
|
|
|
|
|
keroed_edmond wrote: is it possible for me to allow my windows application that i have developed to be able to access a database on my server????
Yes, like Mark stated, use a connection string to tell the applications where the database is located. www.connectionstrings.com[^] has references to many common databases and their connection strings.
I'd like to help but I don't feel like Googling it for you.
|
|
|
|
|
Your mission, if you choose to accept it, is to go to the page that you linked to, look at the database connections for Access, and tell me where you specify the server that the database is located on.
---
b { font-weight: normal; }
|
|
|
|
|
\\Servername\Sharename\dbpath for the database path portion of the connection string. Works like a charm as long as the user has read/write access to the share.
|
|
|
|
|
wrote: look at the database connections for Access
Where are you going on about MS Access? The original poster wanted to know about accessing a database from the server. They might be using MSSQL, MySQL, Oracle, or Firebird. They didn't specify. The link I provided has connection strings that work plenty fine
I'd like to help but I don't feel like Googling it for you.
|
|
|
|