|
Ok I have fixed the leaks you were talking about and used it as a variable.
I have also closed the files after I was finished with them.
It still prints, but just prints a blank page!
How's this possible when I have written to the printDocument before asking it to print?
|
|
|
|
|
Ok I took away the printpreviewcontrol and now it prints all the information??
|
|
|
|
|
How to Export data from PrintDocument or PrintPreview Control?
I have data(Report) in PrintDocument and I want to save that in .Pdf....
-Bhavik
bhaviks@yahoo.com
Bhavik Shah
6, Gautam Appartment,
Opp. Agam mandir,
Gopipura,
Surat, Gujarat, India
9687478087
|
|
|
|
|
Hi!
I am trying to work with Channels.
I implimented the 3.5 frameWork
And the IDE does not know this pakcage:
System.Runtime.Remoting.Channels.Tcp
What am i doing wrong?
Thanks
|
|
|
|
|
Hi,
you will get Intellisense while typing TcpChannel a=new TcpChannel();
provided you have a using System.Runtime.Remoting.Channels.Tcp; line
at the top of the relevant file(s). That in turn requires you provide your project
with a reference to the .NET component called "System.Runtime.Remoting" (right
click in the solution pane and choose Add Reference...).
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Hi!
I get this line:
Error 1 The type or namespace name 'Tcp' does not exist in the namespace 'System.Runtime.Remoting.Channels' (are you missing an assembly reference?) C:\Documents and Settings\Yossi_Tubis\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\Form1.cs 9 40 WindowsApplication1
what should i do??
Thanks
|
|
|
|
|
either reread my earlier reply and pay attention to all the details,
or publish OS,VS,.NET versions and all relevant code.
Luc Pattyn [Forum Guidelines] [My Articles]
This month's tips:
- before you ask a question here, search CodeProject, then Google;
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get;
- use PRE tags to preserve formatting when showing multi-line code snippets.
|
|
|
|
|
Look here[^].
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
During the constructor I display a splash screen with the following code. This screen is boardless and also has no title bar. What is happening is the splash screen displays center screen followed by the main dialog screen behind the splash screen. The splash screen although is disposed, stays displayed until the main dialog screen gets a WM_PAINT (caused by clicking on the screen). This is written in C# and .NET.
How do I get the main screen to repaint after my splash screen is gone without having to click within the dialog? Am I missing something...
<br />
Thread th = new Thread(new ThreadStart(DoSplash));<br />
th.Start();<br />
Thread.Sleep(3000);<br />
th.Abort();<br />
Thread.Sleep(2000);<br />
...<br />
private void DoSplash()<br />
{<br />
Splash sp = null;<br />
try<br />
{<br />
sp = new Splash();<br />
sp.ShowDialog();<br />
}<br />
<br />
catch (ThreadAbortException)<br />
{<br />
sp.Dispose();<br />
} <br />
}<br />
Thank you,
Glenn
|
|
|
|
|
You're creating UI controls on a background thread that is MTA apartment state. That's a no-no, and will cause issues.
Before starting your thread, call
th.SetApartmentState(ApartmentState.STA);
|
|
|
|
|
Hi -- Thank you for your response. I added what you suggested, yet the splash screen still sticks around until you click in the main window. Any other ideas?
Thank you kindly,
Glenn
|
|
|
|
|
I have a project which works with it's own special files - *.gdraw.
I want to make the program when a *.gdraw file is double clicked to be loaded in the program. How is this done?
...
I read some articles and learned that i need the command line arguments. static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm(args));
}
This is the code in the Program.cs. But it doesn't seem to work.
modified on Sunday, March 9, 2008 2:26 PM
|
|
|
|
|
|
Hi all,
Whenever my ListView (let's call it ListView1) selected IDX changes, I wish to grant focus to another ListView (let's call it ListView2), but this is a bit problematic:
If I write ListView2.Focus() inside the ListView1.SelectedIndexChanged event handler, ListView1 is focused. In order to explain this behaviour, I'll mention few facts:
1. Mouse click is composed of 2 events: MouseUp and MouseDown. in each of these cases the control receives focus, if he didn't have it already.
2. whenever changing the selected line at a ListView, the event SelectedIndexChanged is called twice: once for removing the selection from the previously selected line, and once for selecting the new line.
So, the flow is as followed:
1. starting point: line 1 is selected in ListView1.
2. I'm clicking line 2 of ListView1.
3. Line 1 of ListView1 is unselected, which causes firing the event SelectedIndexChanged of ListView1. Now ListView2 receives focus.
4. Line 2 of ListView1 is unselected, which causes firing the event SelectedIndexChanged of ListView1. ListView2 already has focus.
5. Now ListView1 receives focus, since the MouseUp event (fired due to the MouseClick event).
Does anyone have a solution for focusing a control when changing a ListView selected IDX? it also bothers (due to other reasons) that the event SelectedIndexChanged is fired twice for each line selection. Verifying this behaviour can be done by using:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)<br />
{<br />
System.Threading.Thread.Sleep(500);<br />
System.Media.SystemSounds.Beep.Play();<br />
}
When you'll change the selected line, 2 beeps will be heard.
Thanks and sorry for the long question!
Eyal.
|
|
|
|
|
I've always found the ListView to be a very quirky control to work with. The biggest question to answer is why are you using it?
If possible, you should work around it by getting rid of the listview and go with the ListBox instead. Also you want to avoid what you do with events.
You can call SuspendLayout() (I THINK) you will have to verify in the method description. Basically it suspends the events when changing things around in the control.
You can also minimize issues by avoiding too many events. SelectedIndexChange is a good one to get yourself into a hung state just by having one control change another control and having both of them trigger off the change event.
In my test I had the selected index change load the second listview with items. I failed to give it focus as well....but I found that I only had the event fire once!
|
|
|
|
|
You probably get only one SelectedIndexChanged event fired since no item was selected prior to your selection. If an item is selected and then you select different item, the event is fired twice: once for unselecting the first item and once for selecting the second item.
I'll try using the SuspendLayout() function as you suggested and see if it can help.
As for using ListBox - what makes it better? Doesn't it have less functionality than ListView? I'm using ListView since every item in my application is composed of multiple columns.
Thanks a lot for your help!
Eyal.
modified on Tuesday, March 11, 2008 4:28 AM
|
|
|
|
|
WRONG.
I get only one event fired because only one event firing happens when an event gets selected. There is no such thing as an event getting fired twice because the control is 'unslecting the first item' unless you have written some code that issues the event. Regardless of how many times I did the selection, I got only one event. The only time you get multiple events fired is because you've written some bad code that is causing the multiple events to fire. Are you calling an event like Select()? Are you programattically doing something to try and change a selection? Are you bound to other events such as losing focus, our MouseLeave, or anything like that? Are you manually setting focus to something when you shouldn't?
No matter how frequently I select an item there is always only one event that is fired. That is the event model in Windows -- not something I've done. The field getting 'unselected'? That is not a seperate event unless you bind yourself to the lost focus event (or some such stupid thing as that)
In a Windows Form application the ListBox is far more flexible. You can put any object into the list. You control what is displayed by handling the ToString event. The ListView can only have ListViewItem objects in it. So from that aspect of it the ListView is pitiful.
This is the totallity of my code and I get only one event each time I select a new item no matter how many times I do it in a row. And it would be extremely amateurish of me to say I'm getting only one event if I had not done multiple selects in a row. So keep your insults to yourself.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedIndices.Count.Equals(0)) return;
if (listView1.SelectedItems[0].Text.Equals("Fish"))
LoadFish();
else
LoadMammals();
}
private void LoadMammals()
{
listView2.Items.Clear();
listView2.Items.Add(new ListViewItem("Horse"));
listView2.Items.Add(new ListViewItem("Human"));
listView2.Focus();
}
private void LoadFish()
{
listView2.Items.Clear();
listView2.Items.Add(new ListViewItem("Mantaray"));
listView2.Items.Add(new ListViewItem("Lion Fish"));
listView2.Focus();
}
}
|
|
|
|
|
OK,
So I've created a new project which has only one ListView with two items, and one event hadler - for SelectedIndexChanged event. Here is the code:
namespace TestListViewSelectedIndexChanged<br />
{<br />
public partial class Form1 : Form<br />
{<br />
public Form1()<br />
{<br />
InitializeComponent();<br />
}<br />
<br />
private void listView1_SelectedIndexChanged(object sender, EventArgs e)<br />
{<br />
System.Threading.Thread.Sleep(500);<br />
System.Media.SystemSounds.Beep.Play();<br />
}<br />
}<br />
}
The Sleep is ment to hear both beeps.
Now, whenever I select item, 2 beeps are heard. What's the explanation for this behaviour if the event only fired once?
Pleae note that I do not suspect your knowledge, I'm sure it's bigger than mine. I just want to understand this phenomenon.
Thanks,
Eyal.
|
|
|
|
|
Hi All,
Here's in interesting one. If you have a Dictionary like:
String1, 0
String2, 0
String3, 10
String4, 20
How do you locate the key(String4) based on the fact that it has the highest int value (20)?
Thanks,
Jammer
Going where everyone here has gone before!
|
|
|
|
|
Some C# 3 goodness:
string stringWithHighestIntValue = dictionary.OrderBy(input => input.Value).Last().Key;
|
|
|
|
|
Genius!!
I so love generics!!! Thanks professor!
Jammer
Going where everyone here has gone before!
|
|
|
|
|
Keep in mind the good professor's solution will throw an exception if the dictionary is empty, see the Last() extension method[^] used there. You may want to tweak that code a tad to account for empty dictionaries.
|
|
|
|
|
Ok, I'm stuck on something else with this dictionary malarky now. Once I've done an evaluation and worked out the highest value in my dictionary and grabbed the string I need to reset all the values in the dictionary to zero.
I'm getting errors at the moment saying that the collection has been modified and that it can't enumerate over the collection. So far I've tried:
Dictionary<string, int="">.KeyCollection keycoll = FileScore.Keys;
foreach (string s in keycoll)
{
FileScore[s] = 0;
}</string,>
Which fails on the second loop ...
and I've tried:
foreach (KeyValuePair<string, int=""> kvp in FileScore)
{
FileScore[kvp.Key] = 0;
}</string,>
How am I going to get around this problem of reinitialising the dictionary to hold all zero values?
Jammer
Going where everyone here has gone before!
|
|
|
|
|
Yeah, you can't modify a collection while iterating over it; kind of a chicken-and-egg problem.
One easy solution is to iterate over a copy the collection and modify the original:
foreach (var item in dictionary.ToArray())
{
dictionary[item.Key] = 0;
}
|
|
|
|
|
That is a bit of a bind isn't it ... I'm just rewriting my code with no dictionary. I'm trying to shoehorn functionality out of the wrong approach basically ...
I've just defined a new collection and I'm going to use a List<t> instead. I'm sure I'll find some problems along the way
Jammer
Going where everyone here has gone before!
|
|
|
|