|
Ah, okay. Well, I think most of my critical woes are gone now. I was trying to register assemblies in a custom action, and that was a bad idea, so I let the MSI handle the registration. I still notice that the MSI doesn't seem to delete some registry entries that it added, and perhaps sometimes the Uninstall custom action isn't called, but that's more of a matter of tidying up the registry than something critical.
(I try to clean up the Registry after myself, but it's not my fault if the MSI sometimes can't be bothered to do it.)
Thanks!
Arun
|
|
|
|
|
Yes. I try for clean uninstalls, but at some point sometimes you have to just let it go.
I've never seen a Microsoft product itself that said it was logo certified????
And some of their setups are pretty bad.
When they released the eval versions of SQL Server 2000, I got one and put it on my machine. It ruined my MSDE server, and I had to go in and do massive manual registry cleanups to get MSDE installed back on my machine and working properly.
Now I do registry backups before I install anything from Microsoft, LOL.
Robert
|
|
|
|
|
Pretty funny stuff! Sad but true...
|
|
|
|
|
Hi friends,
I need help to design a main page on ASP.NET like my.msn.com has; there are three columns in a page and in a column can contain multiple panes. furthermore, a pane can drag and move into any column.
It is really wonderful idea. but how can I implement this style in my Application?
|
|
|
|
|
Hello to all.
I know how to program but I am not that good in .NET
In my main form (form1) I create 2 arrays within a panel. One with buttons and textboxes and the other array with labels who give the state of the 1ste array.
This is created by executing class1 and class2
The problem is that when I click on a button in panel1 (array1) then the state of that button, tagged textbox and my global variable (class global) change but, I want to change the label in panel2 (array2) to but that generates an error when I click on it and I don’t know how to interpret that error or what to do with it.
Properly my bad English or lake of .NET knowledge.
Can somebody help me?
The error is ‘An unhandled exception of type 'System.NullReferenceException' occurred in test.exe
Additional information: Object reference not set to an instance of an object.’
<code>public Class Form1
Inherits System.Windows.Forms.Form
Dim MyArray1 As Array1
Dim MyArray2 As Array2
Dim Filibits As Integer
Public Sub New()
MyBase.New()
InitializeComponent()
MyArray1 = New Array1(Me.Panel1)
MyArray1.AddNewFilibitControl(7, 19)
MyArray2 = New Array2(Me.Panel2)
MyArray2.AddNewStatusControl(7, 19)
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
Skiped the ‘Required by the Windows Form Designer’ and other not needed functions for this matter
End Class</code>
<code>Option Strict Off
Public Class Array1
Inherits System.Collections.CollectionBase
Private ReadOnly Host1 As System.Windows.Forms.Panel
Public BtnColorOn, BtnColorOff, BtnColorNA, BtnColorF, BtnColorT As System.Drawing.Color
Public Function AddNewGlobal(ByVal Index As Integer, ByVal Used As Integer)
Dim aTextBox As New System.Windows.Forms.TextBox
Me.List.Add(aTextBox)
Host1.Controls.Add(aTextBox)
aTextBox.MaxLength = 16
aTextBox.Height = 20
aTextBox.Width = 90
aTextBox.Left = 90 * (Index Mod 2) + (42 * (Index Mod 2))
aTextBox.Top = (30 * (Index \ 2)) + 2
Global.SetData(1, Index) = "Locatie # " & CStr(Index + 1)
Global.SetData(0, Index) = CStr(CInt(True))
aTextBox.Text = Microsoft.VisualBasic.Left(Global.GetData(1, Index), 16)
If Used < Index Then
aTextBox.Enabled = False
Else
aTextBox.Enabled = True
End If
aTextBox.Tag = Index
AddHandler aTextBox.TextChanged, AddressOf WhenTextChanged
Dim aButton As New System.Windows.Forms.Button
Me.List.Add(aButton)
Host1.Controls.Add(aButton)
aButton.Height = 24
aButton.Width = 40
aButton.Left = 90 * (Index Mod 2) + 90 + (42 * (Index Mod 2))
aButton.Top = (30 * (Index \ 2))
aButton.TextAlign = ContentAlignment.MiddleCenter
aButton.Name = "Button"
If Used < Index Then
aButton.Enabled = False
aButton.BackColor = BtnColorNA
aButton.Text = "N/A"
Else
aButton.Text = "ON"
aButton.BackColor = BtnColorOn
aButton.Enabled = True
End If
aButton.Tag = aTextBox
AddHandler aButton.Click, AddressOf OnOff_ClickHandler
End Function
Public Function AddNewFilibitControl(ByVal Used As Integer, ByVal Total As Integer) As Boolean
Dim Counter As Integer
For Counter = 0 To Total
Me.AddNewGlobal(Counter, Used)
Next
End Function
Public Sub New(ByVal host As System.Windows.Forms.Panel)
Host1 = host
BtnColorOn = System.Drawing.Color.Green
BtnColorOff = System.Drawing.Color.Yellow
BtnColorNA = System.Drawing.SystemColors.Control
End Sub
Public Sub OnOff_ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)
Dim MyArray2 As Array2
Dim IndexArray As Integer = CType(Host1.Controls.IndexOf(CType(sender, System.Windows.Forms.Button).Tag), Integer)
If TypeOf sender Is Button Then
' Create a button object to use in its place
Dim myButton As Button = CType(sender, System.Windows.Forms.Button)
' Check to see if the Button has a TextBox in its Tag property
If TypeOf myButton.Tag Is TextBox Then
CType(myButton.Tag, TextBox).Enabled = Not CType(myButton.Tag, TextBox).Enabled
Global.SetData(0, Int(IndexArray / 2)) = CStr(CInt(CType(myButton.Tag, TextBox).Enabled))
If True Then
If CType(myButton.Tag, TextBox).Enabled Then
CType(myButton, Button).Text = "ON"
CType(myButton, Button).BackColor = BtnColorOn
Else
CType(myButton, Button).Text = "OFF"
CType(myButton, Button).BackColor = BtnColorOff
MyArray2.Off(5) ‘<<<<< ERROR LINE >>>>>
End If
End If
Global.SetData(0, Int(IndexArray / 2)) = CStr(CInt(CType(myButton.Tag, TextBox).Enabled))
End If
End If
End Sub
Private Sub WhenTextChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim myTextBox As TextBox = CType(sender, TextBox)
Dim RelIndex As Integer = CType(CType(sender, System.Windows.Forms.TextBox).Tag, Integer)
Global.SetData(1, RelIndex) = myTextBox.Text
End Sub
End Class</code>
<code>Option Strict Off
Public Class Array2
Inherits System.Collections.CollectionBase
Private ReadOnly Host2 As System.Windows.Forms.Panel
Public BtnColorOn, BtnColorOff, BtnColorNA As System.Drawing.Color
Public Function AddNewLabelTransponderStatus(ByVal Index As Integer, ByVal Used As Integer) As System.Windows.Forms.Label
Dim aLabel As New System.Windows.Forms.Label
' Add a Label to the collection's internal list.
Me.List.Add(aLabel)
' Add the button to the controls collection of the form
' referenced by the HostForm field.
Host2.Controls.Add(aLabel)
' Set intial properties for the button object.
aLabel.Height = 24
aLabel.Width = 40
aLabel.Left = 90 * (Index Mod 2) + (42 * (Index Mod 2))
aLabel.Top = (30 * (Index \ 2))
aLabel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
aLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
aLabel.TextAlign = ContentAlignment.MiddleCenter
aLabel.Name = "Label"
aLabel.Tag = Index
If Used < Index Then
aLabel.BackColor = BtnColorNA
aLabel.Text = "NIC"
Else
aLabel.Text = "ON"
aLabel.BackColor = BtnColorOn
End If
End Function
Public Function AddNewStatusControl(ByVal Used As Integer, ByVal Total As Integer) As Boolean
Dim Counter As Integer
For Counter = 0 To Total
Me.AddNewLabelTransponderStatus(Counter, Used)
Next
End Function
Public Function Off(ByVal IndexArray As Integer)
Me.Host2.Controls(IndexArray).Enabled = False
End Function
Public Sub New(ByVal Host As System.Windows.Forms.Panel)
Host2 = Host
BtnColorOn = System.Drawing.Color.Green
BtnColorOff = System.Drawing.Color.Yellow
BtnColorNA = System.Drawing.SystemColors.Control
End Sub
Default Public ReadOnly Property Item(ByVal Index As Integer)
Get
If Me.List.Item(Index).GetType.Name = "TextBox" Then
Return CType(Me.List.Item(Index), System.Windows.Forms.TextBox)
ElseIf Me.List.Item(Index).GetType.Name = "Button" Then
Return CType(Me.List.Item(Index), System.Windows.Forms.Button)
ElseIf Me.List.Item(Index).GetType.Name = "Label" Then
Return CType(Me.List.Item(Index), System.Windows.Forms.Label)
End If
End Get
End Property
End Class</code>
Marco
|
|
|
|
|
NullReferenceException means that you are attempting to use a variable that has not been initialized. In OnOff_ClickHandler, you declare MyArray2 to be of type Array2 but you never instantiate it, which is why the line MyArray2.Off(5) throws a NullReferenceException .
Charlie
if(!curlies){ return; }
|
|
|
|
|
Charlie,
Ok, but when I do that Ill get Argument not specified for parameter 'Host' of 'Public Sub New(Host As System.Windows.Forms.Panel)'.
I don't get it?
Marco
|
|
|
|
|
The constructor in Array2 takes a Panel as an argument. Obviously, you'll need to provide one.
Charlie
if(!curlies){ return; }
|
|
|
|
|
I have added this
Dim MyArray2 As Array2<br />
Dim panel2 As System.Windows.Forms.Panel
And this in the clickhandler
MyArray2 = New Array2(panel2)
That seems to work when calling MyArray2.Off(5) Ill end up in Class2
Public Function Off(ByVal IndexArray As Integer)<br />
Me.Host2.Controls(IndexArray).Enabled = False<br />
End Function
then I get the next error 'Additional information: Object reference not set to an instance of an object' but if I call by a clickhander from a label create in class2 it works
When I make a reference then it's out of the range. OK wrong reference.
I am lost.
|
|
|
|
|
I haven't made an effort to understand the 200 lines of code you posted, nor do I plan to.
What is apparent, though, is that there are not 6 Control s contained in the Controls collection of Me.Host2 , so when you say Me.Host2.Controls(5).Enabled = False a NullReferenceException is thrown. You cannot access the properties of a null variable.
You need to fire up the debugger and step through your code, line by line, until you see the problem. Are you using the correct index into the ControlCollection ? Are you mistakenly creating a new local variable instead of accessing one at the class level?
The problem is there for the finding.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Thanks for your effort.
There a 20 Indexes.
When I use the debuger and hit F11 everthing is working fine until a press one of the 20 buttons.
Well I think I build a work around
MArco
|
|
|
|
|
A workaround for what? This isn't a limitation that needs to be circumvented. There is a bug in your code. The workaround is finding and squashing the bug.
Charlie
if(!curlies){ return; }
|
|
|
|
|
I can build the complete application in another matter in shuts a way the status panel is update when I click an particular button in other words build my own tabcontrole.
Is it a option that I mail you the code and that we squash the code together?
I'm trying to fix it for more then 4 days now.
Marco
|
|
|
|
|
DSLR wrote:
Is it a option that I mail you the code and that we squash the code together?
I'm sorry, but no. I'm lucky if I have enough time to debug my own code.
My advice would be to isolate the problem to as small a section of code as possible. Strip everything not directly related to it and try to reproduce the error with as little code as possible. When you do, the bug will probably jump out at you and you will (if you're like me) wonder how it escaped you for so long.
Good luck to you.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Ok, I went back and looked at the code you posted (against my better judgement, but what the heck).
It turns out the NullReferenceException you had originally asked about was a symptom of a questionable design. That's why pointing out the source of the exception didn't really solve your problem.
Let's see if I have this correct. You have a Form with two Panel controls. Each Panel contains a class which represents a group of controls (Array1 in Panel1 and Array2 in Panel2 ). When a button is clicked in Array1 on Panel1 , you want something to happen in Array2 on Panel2 . Do I have it right?
Ok, the original problem you posted with was that you got a NullReferenceException when you clicked a buttin in Array1 . The reason was that you were creating a new instance of Array2 instead of using the one you intended to, which is the one on Panel2 on Form1 .
One way of solving your problem would be giving the instance of Array1 a reference to the intance of Array2 . I personally think this would be kind of clunky because Array1 shouldn't need to have any knowledge of Array2 .
Since you are wanting to do something in an unrelated class (Array2 ) when something happens in Array1 , I think this would be the ideal place for an event. Declare an event in Array1 which gets fired anytime a button is clicked. You can define a class that inherits from EventArgs if there is additional information that you'd like to pass along when the event is fired (index of the button clicked, etc.) If you define an event args class, you'll also need to define a delegate that the handlers of this event will use as a signature. You can then define an event handler in Array2 that handles this event.
Once you've got that all set up, an object common to both classes (Form1 , for instance) would hook the event up after instantiating both ojects and you're good to go.
If you have questions about the way events work in VB.NET, I'd suggest MSDN or Google, which are both excellent resources. If you have a specific question about any of my suggestions, ask away. Please don't ask me to write the code, though.
Charlie
if(!curlies){ return; }
|
|
|
|
|
Thanks for looking in to it.
Do I have it right? Yes you have.
I have an event for every button and Text change in Function AddNewGlobal for the button AddHandler aButton.Click, AddressOf OnOff_ClickHandler for the text AddHandler aTextBox.TextChanged, AddressOf WhenTextChanged
In the OnOff_ClickHandler event there the row MyArray2.Off(5) the 5 has to be the index form the clicked button Dim IndexArray As Integer = CType(Host1.Controls.IndexOf(CType(sender, System.Windows.Forms.Button).Tag), Integer) I did the 5 to be shure
I have simplified the code.
Got some hinds, tips and how to’s but I don’t get it
.NET isn’t my thing.
I give up
|
|
|
|
|
DSLR wrote:
In the OnOff_ClickHandler event there the row MyArray2.Off(5)
The point I was trying to make was that the way you have it set up now Array1 has to have knowledge of Array2 (that it has an Off method or that it even exists) when it shouldn't need to. The events you mentioned are events of the individual controls in Array1 . What I'm talking about defining a custom event in Array1 that could be handled in Array2 .
Think about the System.Windows.Forms.Button class. It doesn't know or care about the Panel class or a custom user control you might put it in. It doesn't require a reference to the control that contains it or need to know the name of any methods the containing control defines. You can execute a block of code every time the Button is clicked by subscribing to the Click event, just as you've done.
Well, in Array2 , you want to execute a block of code every time any Button is clicked on Array1 . You should define an event, just like Button does, that notifies anyone that's interested when a Button is clicked. This doesn't require Array1 to have intimate knowledge of Array2 . Note also that you shouldn't subscribe to the Click event of each Button in Array1 from Array2 . That would require Array2 to have an inappropriate knowledge of Array1 .
The changes I'm proposing may seem complicated at first, but they will simplify your code if they are implemented. You'll be free to change code, class names, method names, etc. without worry. The only thing you'll be concerned with is having Array1 shout to the world, "Hey, somebody clicked one of my buttons!" (firing an event) and having Array2 listen for that shout (subscribing to the event).
DSLR wrote:
.NET isn’t my thing. ...I give up
That's your choice, of course. Delegates and events aren't always the easiest thing to grasp at first glance. If you power through it, you'll be a better developer. It will take effort, but it's well worth it, IMO.
Here is a popular CodeProject article on events and delegates[^]. It may help the pieces fall into place and make what I'm saying start to make some sense.
Charlie
if(!curlies){ return; }
|
|
|
|
|
I understand what you saying
For testing I have added in form1
Public WithEvents myEvent As New Array1(New Panel) and added something to do when event is triggerd
Public Sub myEvent_Clicked(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles myEvent.Clicked<br />
MessageBox.Show("Button pressed")<br />
End Sub
To test the event I have added a button who's fireing the event in Array1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br />
myEvent.OnOff_ClickHandler(sender, e)<br />
End Sub
In Array1 there is the routine
Public Sub OnOff_ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)<br />
MessageBox.Show("Event routine")<br />
RaiseEvent Clicked(sender, e)<br />
End Sub
When I click button1 the event RaiseEvent Clicked(sender, e) is fired but when I click a button from the array panel with AddHandler aButton.Click, AddressOf OnOff_ClickHandler then nothing happed. I see the first message with "Event routine" appear but the second not
What's the different between a fixed button and a button from an array control?
In my opinion nothing but who am I
|
|
|
|
|
Hi all
I've downloaded a .NET library and the documentation is available as an HxS file. From my understanding after googling around, this file is compressed help that should have been installed in VS by the install file (.msi). But it hasn't. From what i found on the web, installation of the HxS is not trivial (XCopy install does no extend to help files apparently). Does anyone know of any way to either a) easily install the HxS in VS2003 or b) view it using another trick ?
are tools such as H2Reg the only way to go ?.. there's got to be an easy way to read help files ??
Note: I VS2003 installed without the MSDN help. The only installed help topics come from another library (ODP.NET) that were installed correctly from the .msi
thanks
Denevers
|
|
|
|
|
Hi everyone,
On a 3 tiered environment, WinApp will call a method from a remote machine (IIS) which loads Crystal Report document object, processes some calculations, loads datasets. Now this method should throw the report document to WinApp side so that the user can view the result on his/her Crystal Report viewer. There are almost 500 users of this Winapp. The company doesn't want to buy per user CAL for crystal reports. They want to buy per processor (for IIS box) license. The nature of the report is quite complex as the client app has to pass parameters into stored procs, stored procs returns some data. Now I need to compare row by row and column by column to find out what values got changed. And dump that result into a new dataset. Use this dataset for the report document object.
Now the question is how is this possible. I tried remoting. HOwever, doesn't look like it can handle the Report Document object and send to Win App.
Also tried web services but it is slow and will not let me do the row by row and column by column processing, as my report have 18 sub reports. When designing those reports, I am using generic datasets.
How to dynamically feed data into crysal report, avoid the expensive licensing issue plus allow the WinApp client to view the reports.
Please help. Very critical.
|
|
|
|
|
Hi all,
I'm currently trying to install a publisher policy into the GAC.
I created a .cfg file, then I used the AL.exe to create a 'publisher policy assembly' with the command
al /link:MyPublisherPolicy.cfg /out:policy.3.0.MyAssemblyName.dll /culture:de /keyfile:Key.snk /version:3.0.1.44
Everything worked fine: I could install the 'publisher policy assembly' in the GAC with no problems.
But if I delete or rename the .cfg file and then try to install the 'publisher policy assembly' into the GAC,
then I get an error message saying:
"A module specified in the manifest of assembly 'policy.3.0.MyAssemblyName.dll' could not be found."
Why does the 'publisher policy assembly' require the 'publisher policy cfg file'? I thought that the cfg was linked into the assembly?
Best Regards
Bernd Ritter
-------------------------------------------
The light at the end of the tunnel has been switched off temporarily due to budget problems...
|
|
|
|
|
Hi All,
Am creating a hash storage on the system using the following code. The following line actually creates the virtual directory with the guid name in the Documents and Settings/Administrators/LocalSettings/ApplicationData/IsolatedStorage directory...
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore( IsolatedStorageScope.User
| IsolatedStorageScope.Assembly, null, null );
Further, I create a hash.dat file in the above directory. This was working fine in the previous server. Currently, the server is changed and am facing this. Must have something to do with the system / machine settings. Have pasted the error below. Please help!
Many thanks in advance,
Susmitha.
ERROR:
Server Error in '/WeddingWarehouse' Application.
--------------------------------------------------------------------------------
Unable to create the store directory.[The system cannot find the file specified. ]
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.IsolatedStorage.IsolatedStorageException: Unable to create the store directory.[The system cannot find the file specified. ]
Source Error:
Line 291: private void LoadData()
Line 292: {
Line 293: IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore( IsolatedStorageScope.User
Line 294: | IsolatedStorageScope.Assembly |IsolatedStorageScope.Domain , null, null );
Line 295: if ( isoStore.GetFileNames( settingsFileName ).Length == 0 )
Source File: c:\inetpub\wwwroot\weddingwarehouse\productpage.aspx.cs Line: 293
Stack Trace:
[IsolatedStorageException: Unable to create the store directory.[The system cannot find the file specified.
]]
System.IO.IsolatedStorage.IsolatedStorageFile.nGetRootDir(IsolatedStorageScope scope) +0
System.IO.IsolatedStorage.IsolatedStorageFile.InitGlobalsNonRoaming(IsolatedStorageScope scope) +42
System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope scope) +98
System.IO.IsolatedStorage.IsolatedStorageFile.GetGlobalFileIOPerm(IsolatedStorageScope scope) +208
System.IO.IsolatedStorage.IsolatedStorageFile.Init(IsolatedStorageScope scope) +37
System.IO.IsolatedStorage.IsolatedStorageFile.GetStore(IsolatedStorageScope scope, Type domainEvidenceType, Type assemblyEvidenceType) +66
WeddingWarehouse.OrderedProductHashStorage.LoadData() in c:\inetpub\wwwroot\weddingwarehouse\productpage.aspx.cs:293
WeddingWarehouse.OrderedProductHashStorage..ctor() in c:\inetpub\wwwroot\weddingwarehouse\productpage.aspx.cs:273
WeddingWarehouse.Controls.Catalog.ProductDetail.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\weddingwarehouse\controls\catalog\productdetail.ascx.cs:98
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573
Susmitha
|
|
|
|
|
|
Not sure if this is the place for it but was wondering if anbody knew if its possible to overlay wave files at all using the .Net framework?
Would appreciate any views or opinions on this matter.
Regards
Ziggy
|
|
|
|
|
.NET 1.x contains no support for any kind of sound,
but you can read/write wave files with the BinaryReader/BinaryWriter classes, if you know how to overlay wave samples.
_________________________________
Vote '1' if you're too lazy for a discussion
|
|
|
|
|