|
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
|
|
|
|
|
We require to perform functional,regression,performance,load testing, along with code analysis and optimization.
Can any one pl suggest which tool is applicable for this
|
|
|
|
|
I would really like some help to figure this out.. i have to convert a string into a long(string). The FindWindow on CE requires long string in order to function.
Can this be done with the StringBuilder??
Thanks in advance...
|
|
|
|
|
Does the Shared function Int64.Parse(string) do what you want?
e.g., findwindownumber = Int64.Parse("3245235")
|
|
|
|
|
Hi,
When I try to remove am assembly from the GAC on my machine, I'm getting the following error "There was an error removing <xyz>" (XYZ is my assembly).
I'm getting it for every assembly I'm trying to delete (although it is listed properly in the Assembly List).
Could someone give me some advice on what is the problem, and how to fix it?
Thanks,
S.
|
|
|
|
|
If you're using gacutil it should tell you why there was a problem removing the assembly.
Two things I can think of off the top of my head: you don't have administrative privileges (only administrators can alter the contents of the GAC) or the assembly is part of a Windows Installer package (you can only remove it by uninstalling the package).
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Hi Mike,
Thanks for your reply.
Actually, I think that the problem is a bit different.
1. I always login as administrator to my machine.
2. The assembly which is problematic is a private assembly that I developed, and I don't believe is a part of Windows Installer Package (is there a way to verify it?).
I found some trick - which is using the shell command "rd /s" from within the GAC directory, which actually deleted the assembly from the GAC (or at least I didn't see it in the GAC Viewer...), but that didn't really solved my problem - when I rebuilt my assembly through Visual Studio .NET, the build failed because it failed to regsiter the the Interop in the GAC... (although I deleted it using the "rd" command)
So - I believe there is a kind of corruption and I can't put my finger on it...
Any help is appreciated.
Thanks,
S.
|
|
|
|
|
Hi,
1.I have Listed a sample How to Install and UnInstall as Assembly into/from GAC.
2.On Console Application is an easy way to Creating as Assembly.
'Creating Assembly with Public Key Reference:
'--------------------------------------------
A) Creating 'PublicKey'
'Step into Command Prompt and do the followings...
D:\Pandian> SN -k Pair.dat
-k Generates a new KeyPair and stores it into Pair.dat file.
The file Pair.dat contains binary code.
D:\Pandian> SN -p Pair.dat Public.dat
-p Extracts the public key from the key pair in
Pair.dat and stores it in Public.dat.
The file Public.dat contains the only Unique ID.
D:\Pandian> SN -tp Public.dat > out.txt
-tp Extract Token Public Key from Public.dat file and writes into out.txt file.
'Now Public Token Key created.
'--- Code Starts
Imports System
Imports System.Reflection
Imports System.Security.Permissions
Namespace Testing
<strongnameidentitypermission(securityaction.demand, publickey:="0024000004800000940000000602000000240000525341310004000001000100cb049b6b06c49d940214a5c96919da4c5760938045f281351d8d3f99dfad9b03202848b8952447efce8a812b96ec92b9654a732cfaff55afacb379cf54a4a16221065d5d04a7f3bae600434b110d087a15ea410e4d4e3eccec7f339f967cf4c8f9a86799e2e1c23748664c81e4149b6071f005179c3fe059f6432053959344af" )="">Public Class TestingClass
Public Function TestingFunction() as string
return "Welcome to Pandian Shell"
End function
End Class
End Namespace
' The Public Key has been copied and pasted from 'out.txt' Textfile.
' Compile the Code as an Assembly as following way..
D:\Pandian> Vbc Testing.vb /t:Library /r:System.Security.dll
' Now an Assembly Created named 'Testing.dll'
'Installing the Assembly on GAC
' ------------------------------
D:\Pandian> GACUTIL -i Testing.dll
' Now our Assembly Installed on GAC.
'Uninstalling the Assembly from GAC :
'------------------------------------
' It should not deleted from GAC directly.
' Do the following proper way...
D:\Pandian> GACUTIL -u Testing
'The following result prints our DOS screen.
Number of Items Uninstalled = 1
Number of Failures = 0
'-- If feel, Now I reached your requirement.
With Regards,
PANDIAN S
|
|
|
|