|
hello
i have in my application 2 windows, mainwindow and window2, in window2 there is a bool variable and its false per default, after clicking a button in windows 2 it becomes true and another function in the mainwindow start and should change a buttoncontent in the mainwindow if the variable of windows is true..
the problem is the mainwindow class doesnt get the changing of the variable of window2 and still thinks its false and also the content isnt changing
here is the code of the mainwindow:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public Window2 window2instance2 { get; set; }
public void ChangeButton1Content()
{
if (window2instance2.key)
{
Button1.Content = "I Changed";
}
}
private void Openwindows2_Click(object sender, RoutedEventArgs e)
{
Window2 window2instance = new Window2();
window2instance.MainWindowInstance = this;
window2instance.Show();
}
}
and this is the codebehind of window2:
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
}
public bool key = false;
public MainWindow MainWindowInstance { get; set; }
public void window2button_Click(object sender, RoutedEventArgs e)
{
MainWindow mainwindow = new MainWindow();
mainwindow.window2instance2 = this;
key = true;
MainWindowInstance.ChangeButton1Content();
this.Close();
}
}
this was my last try and compiler is telling me at " if (window2instance2.key)" that Object reference not set to an instance of an object.
any tipps how can i resolve that?
thanks and cheers
|
|
|
|
|
Well, in the MainWindow class, you define a property for Window2 that you don't assign to. In the code for Openwindows2_Click, you create a local variable version of Window2, and instantiate that. So, you can't get to Window2 outside of this method because it's not in scope. You do a similar thing in Window2 attempting to reference MainWindow.
So, the first fix is to stop using the method level variable, and use the property. The second thing I'd look at is using a delegate, rather than relying on the second form directly calling a method on the first form. To do this, create a delegate in Window2 which your MainWindow class subscribes to, and then call this delegate from Window2, which will notify MainWindow that there's something to do. If this seems familiar to you, it's because this is how events work in .NET.
|
|
|
|
|
Thanks for the replay pete
yes i know how delegates and stuff work in wpf but actually i m a little bit confused
can u please show me with an example code how it will work? that will be easily for me to understand
thanks very much
jack
|
|
|
|
|
This[^] might help you get a better understanding.
|
|
|
|
|
MainWindow mainwindow = new MainWindow(); is creating a new instance of MainWindow. It is not the MainWindow that created Window2.
try:
public partial class Window2 : Window
{
public MainWindow mainWindow;
public bool key = false;
public Window2(MainWindow mainWindow )
{
InitializeComponent();
this.mainWindow = mainWindow;
}
public void window2button_Click(object sender, RoutedEventArgs e)
{
mainWindow.ChangeButton1Content();
this.Close();
}
public void Dispose()
{
mainWindow = null;
}
}
[Edit] Sorry there is one other thing
private void Openwindows2_Click(object sender, RoutedEventArgs e)
{
if (this.window2instance2 == null) this.window2instance2 = new Window2(this);
this.window2instance.Show();
}
"You get that on the big jobs."
modified on Monday, March 14, 2011 6:34 PM
|
|
|
|
|
|
You're welcome.
|
|
|
|
|
I am mapping a drive in my apps by using WNetAddConnection2. However I am getting an exception:
Unknown error mapping drive. Return result=1208
Could you explain why and how to avoid this exception?
<br />
Try<br />
' if the UNCPath end with a backslash then we need to remove it.<br />
If UNCPath.EndsWith("\") Then<br />
UNCPath = UNCPath.Remove(UNCPath.Length - 1, 1)<br />
End If<br />
Dim nr As NETRESOURCE<br />
nr = New NETRESOURCE<br />
nr.lpRemoteName = UNCPath<br />
nr.lpLocalName = DriveLetter ":"<br />
strUsername = My.Settings.ServiceDomain & My.Settings.ServiceID.ToString<br />
strPassword = My.Settings.ServicePassword.ToString<br />
nr.dwType = RESOURCETYPE_DISK<br />
Dim result As Integer<br />
result = WNetAddConnection2(nr, strPassword, strUsername, 0)<br />
If result = 0 Then<br />
Return True<br />
<br />
Else<br />
Select Case result<br />
Case 53 'Network path not found<br />
Throw New Exception("Network path not found.")<br />
Case Else<br />
Throw New Exception("Unknown error mapping drive. Return result=" & result.ToString & "; lpRemoteName=" & nr.lpRemoteName & "; lpLocalName=" & nr.lpLocalName & "; strUsername=" & strUsername & "; strPassword=" & strPassword)<br />
End Select<br />
<br />
Return False<br />
<br />
End If<br />
|
|
|
|
|
please use PRE tags rather than CODE tags for multi-line code snippets.
Google informed me you're not the only one getting 1208's. This[^] should be useful.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Is there a slash included in the domain name? Depending on the domain structure, it might also be possible to leave it out.
strUsername = My.Settings.ServiceDomain & "\\" & My.Settings.ServiceID.ToString
|
|
|
|
|
Hi friends,
I am trying to develop a testing tool..... so it parses a given source code file do some calculation on it and generates some reports.....
Now my problem is:
1. Parser code is generated by flex, so its's a C file, while the front end I am planning to designed using Visual C++.NET or may be in C#.So how do these two modules (my parser and the front end) communicate with each other, I mean share or transfer information.
2. Is it possible to port the lex.yy.c file to .NET environment so that I can just invoke it from my front end as a function???
3. Is there any way I can port complete flex and bison tools to VS envvironment so tht I can write .l or .y file there it self.....I tried Custom Build rules but it got so much complex....that I left it....
Sorry for being ambiguous but this is my first project on system software and we have to create it in for windows so plz help
PS: If there are any other way to do this....or some valuable suggestions regarding the design of the project plz let me know...
|
|
|
|
|
ANTLR[^]allows you to do parser generation similar to Lex/Yacc and has options to generate C# output. That would save a lot of time.
I wouldn't like to either try port a Flex-generated lexer to C#, or interface to such a beast from Managed C++.
There are other tools that do a similar job. Its also worth a look at MGrammar, but thats in a bit of a state of limbo at the moment, so I wouldn't rely on it for real-world projects.
|
|
|
|
|
Hi friends can any body tell me how i can get the information of device driver of the system using c#
WANTED wasim khan(Killed 50 Innocent Buggs, Distroyed 200 Exception, make 5 Project Hostage) any Compnay Hire him will pay 30,000. Best place where u can get him is Sorcim Technologies Murre Road RWP
|
|
|
|
|
You should post your question only once, and make sure it is perfectly clear, which it is not at the moment. So go edit the one in the C# forum!
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
can anybody tell me ..i want to open my computer through voice ....net aplication
|
|
|
|
|
The "easiest" way to do this would be to implement SAPI. It's not perfect, and is pretty limited in it's use, but this is probably going to be the cheapest way for you to do this.
|
|
|
|
|
Do a search on the internet. You will find some solutions and articles on this topic.
The funniest thing about this particular signature is that by the time you realise it doesn't say anything it's too late to stop reading it.
|
|
|
|
|
Can you help me write a pattern for RegularExpressions.Regex.
I need to check if file match the following pattern:
string-6digit_restof the file name
|
|
|
|
|
A couple of things.
1. We have a regular expression forum. This should be posted here[^].
2. The pattern you have is unclear. Is this a string with 6 digits somewhere in it? Or a string that starts with 6 digits? Can it end with 6 digits or must there be more characters after that? Perhaps you should define the rules of it - in the regex forum.
|
|
|
|
|
Maybe this link can help you: http://osherove.com/tools
But probably you found this already on the Regex forum
Gaston
|
|
|
|
|
Ok, I am not sure that "factory" is the correct word but here it goes.
Let's say that we have a number e.g. A=160.
Also let's take for GRANTED that we have the following numbers Nx=(2,3,4,5,6,7,8,10,15,20,25,30,40,50,100,500)
I want to find out what numbers from Nx do i have to MULTIPLY between them, in order to get number A ?
So for example 160=4x40 or 160=2x4x20, etc.
Does that make any sense ?
Note : We have to use ONLY ONCE the numbers from Nx.So we cannot do for example 12=2*2*3 (we use 2 twice).We could only do 12=2x6, etc
modified on Wednesday, March 9, 2011 4:32 AM
|
|
|
|
|
Johnkokk wrote: Does that make any sense ?
It makes some sense.
I can't figure why this is asked in the .NET forum though.
Here are some keywords: integer, division, remainder, modulo.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Yeah sorry.I use VB .net and thought here would be a good place.If mods think they should move it to somewhere else, no problem
|
|
|
|
|
This is basic mathematics using an iterative process to check pairs of numbers. What exactly is your programming question; probably homework!
I must get a clever new signature for 2011.
|
|
|
|
|
Not homework.I am too old for that now
To make things simpler maybe, I've reached to a point that i have limited my list of numbers that can be multiplied betweend them, to numbers which actually have a pottential.
So for 160, the program limited the choises to (2,4,5,8,10,20,40)
You can see that if you multiply some of them you can come up with 160.For example 2x8x10 or 4x40, etc
My programming question is some pointers on how to get this 2x8x10 ?
It's probably easy but i am at a point that the mind is frozen
Thanks
|
|
|
|