|
Christian Graus wrote: he easiest way to do this may well be to create a tree control that is never shown on a form, and populate it.
IMO that's bad practice, assuming we're in WinForms world here. Using hidden controls as a data structure is a bad practice to carry over from web dev to windows dev (no offense to you, Christian). There is a lot of overhead associated with a control (at least one window handle has to be created, all types of messages get sent to it, etc.) If you don't need a control, don't use one, it's really expensive.
:josh:
My WPF Blog[^]
|
|
|
|
|
Josh Smith wrote: (no offense to you, Christian).
None taken. I'm not always right It just struck me as a quick and dirty solution, I've not actually done it myself.
Josh Smith wrote: If you don't need a control, don't use one, it's really expensive.
I would not regard the overhead to be that much, certainly compared to the overhead of writing a tree structure, assuming one can't be found to use. But, like I said, I'm not claiming to always be right :P
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Christian Graus wrote: I would not regard the overhead to be that much, certainly compared to the overhead of writing a tree structure, assuming one can't be found to use. But, like I said, I'm not claiming to always be right
It's common to underestimate the overhead of a windows control. Those suckers are heavy and eat up processing time (they are windows, after all). I used to be a windows control developer, so I spent a lot of time on these types of issues. So in this rare instance, I am claiming to be right.
:josh:
My WPF Blog[^]
|
|
|
|
|
Christian Graus wrote: certainly compared to the overhead of writing a tree structure
"overhead" not sure I follow your meaning could you elaborate?
"Just about every question you've asked over the last 3-4 days has been "urgent". Perhaps a little planning would be helpful?" Colin Angus Mackay in the C# forum
led mike
|
|
|
|
|
Don't reinvent the wheel. Search CP for keyword "tree" and you'll get tones of tutorial & code examples.
Best,
Jun
|
|
|
|
|
class Tree
{
private int value = 0;
public Tree leftChild = null;
public Tree rightChild = null;
public Tree(int value) { this.value = value; }
}
To populate the tree:
Tree root = new Tree(123);
root.leftChild = new Tree(5);
root.rightChild = new Tree(411);
This is a very basic binary tree, which looks like this:
Tree (123)
|
|
|- leftChild (5)
| |------- leftChild (null)
| |------- rightChild (null)
|
|------- rightChild (411)
| |------- leftChild (null)
| |------- rightChild (null)
There's various sorts of trees, see some examples at wikipedia:
Binary Tree
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Use XmlDocument, XML's just a tree, and it shouldn't be quite as heavy as a control. Or write it...
public class Tree {
private Tree parent;
private List<Tree> children;
public Tree Parent {
get { return parent; }
set { parent = value; }
}
public List<Tree> Children {
get { return children; }
set { children = value; }
}
}
Of course you'll wanna add constructors and methods to help, but there's the basic structure.
Try code model generation tools at BoneSoft.com.
|
|
|
|
|
I learned everything I needed to know in CS101 in pseudo-code; including what happens to an A when you sleep through the Lab final.
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
|
|
|
|
|
Great stuff here: clickety[^]
--EricDV Sig---------
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
- Laurence J. Peters
|
|
|
|
|
Hi,
I am facing a problem in my web application while i am trying to print an html page, whose url is specified in a textbox, using axWebBrowser component. I am getting an error "Exception of type InvalidActiveXStateException was thrown", at axW.Navigate statement. Please help me to rectify this problem.
private void Button1_Click(object sender, System.EventArgs e)<br />
{<br />
try<br />
{<br />
object empty= null;<br />
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(WebForm1));<br />
AxWebBrowser axW=new AxWebBrowser();<br />
axW.Enabled=true;<br />
axW.Visible=false;<br />
axW.OcxState = (System.Windows.Forms.AxHost.State)(resources.GetObject("axW.OcxState"));<br />
axW.Navigate(TextBox1.Text,ref empty,ref empty,ref empty,ref empty);<br />
axW.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT,SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER ,ref empty,ref empty);<br />
}<br />
catch(Exception Ex)<br />
{<br />
Response.Write(Ex.Message.ToString());<br />
} <br />
}
Thanks,
Sai.
|
|
|
|
|
Don't cross post your question and you may get answer
|
|
|
|
|
Basically, you can't use the AxWebBrowser control is an ASP.NET app. The control REQUIRES a Windows Form in order to work.
Besides, ASP.NET code only runs on the server side. This code would print the web page on the printer attached to the web server. Is this what you really want??
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Yes. This application is a web application and I want the print at the server end since the user is server in our case.
If it is not possible to print with this control in a web application, Is there any other way to print an html page without loading it and not to show any print dialog at the user end.
Please help me with this case.
Thanks in advance,
Sai.
|
|
|
|
|
Hi all,
I have a picture box on a form that shows an image. The user has the ability to zoom in on the picture. this means that not all the picture is visible at once.
what i am trying to do is implement a grab hand - you hold the mouse button down and can reposition the image within the picture box.
I have placed the picture box on a panel - this gives me the panels scrollbars I have then set the picture box to auto size. then using the following code i am able to move the image
private void picBox_MouseMove(object sender, MouseEventArgs e)
{
pnl.VerticalScroll.Value = pnl.VerticalScroll.Value + e.Y / 8;
pnl.HorizontalScroll.Value = pnl.HorizontalScroll.Value + e.X / 8;
}
I have been trying for ages with little luck ! i gather that it will be possible using the MouseDown MouseMove and MouseUp events however i seem to be running into all kinds of problems
I would be most grateful if someone could give it a blast and let me know how they get on
Thanks Lots
John
|
|
|
|
|
The easiest way is to ditch the picture box and draw the image in your own paint handler. Then you have full control.
Christian Graus - Microsoft MVP - C++
Metal Musings - Rex and my new metal blog
|
|
|
|
|
Hi,
yes I think you'll have to handle the mentioned mouse events to get it done. Without being tested the following solution might work:
private void picBox_MouseDown(object sender, MouseEventArgs e)
{
downX = e.X;
downY = e.Y;
vertValue = pnl.VerticalScroll.Value;
horizValue = pnl.HorizontalScroll.Value;
inMove = true;
}
private void picBox_MouseMove(object sender, MouseEventArgs e)
{
if (inMove)
{
int diffX = e.X - downX;
int diffY = e.Y - downY;
pnl.VerticalScroll.Value = vertValue + diffX;
pnl.HorizontalScroll.Value = horizValue + diffY;
}
}
private void picBox_MouseUp(object sender, MouseEventArgs e)
{
inMove = false;
}
The general approach here is to save the values of the scrollbars and the mouse position when the button was pressed and then use those to calculate the new scrollbar positions when the mouse moves.
|
|
|
|
|
Ahem - shameless plug :-> - You might want to checkout my article on Runtime Movable Controls[^].
Seriously take a look at the download sample. It's a more complex version of the control than is described in the article and the Sandbox test app gives you something you can play around with.
Since a Label control can show an image, all you would need to do is use the MovableLabel control in the article, set the Image property to the bitmap you want, then set it's Size property to the size of the Image. Done!
The MovableLabel will scroll around exactly the way you describe in your post.
Dave Kreskowiak
Microsoft MVP - Visual Basic
|
|
|
|
|
Whipped this up in about 20 minutes. (I couldn't wrap my brain around the stinking math for a little while!)
Create a new UserControl, call it ScrollablePicture or whatever. Drop a Panel on the design surface and set its Dock property to Fill, then it's AutoScroll property to True. Drop a PictureBox control on the Panel. You don't have to change any of it's properties.
Then:
public class ScrollablePicture {
private Point m_CursorOffset;
private int m_CurrentHScroll;
private int m_CurrentVScroll;
private bool m_Scrolling = false;
public ScrollablePicture() {
InitializeComponent();
this.Cursor = Cursors.Hand;
}
public Image Image {
get {
return PictureBox1.Image;
}
set {
if (value != null) {
PictureBox1.Size = value.Size;
PictureBox1.Image = value;
}
}
}
private void PictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
if ((e.Button == Windows.Forms.MouseButtons.Left)) {
m_CursorOffset = Panel1.PointToClient(System.Windows.Forms.Cursor.Position);
m_CurrentHScroll = Panel1.HorizontalScroll.Value;
m_CurrentVScroll = Panel1.VerticalScroll.Value;
m_Scrolling = true;
}
}
private void PictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) {
if (m_Scrolling) {
Point Offset = Panel1.PointToClient(System.Windows.Forms.Cursor.Position);
int newH = (m_CurrentHScroll
+ (m_CursorOffset.X - Offset.X));
int newV = (m_CurrentVScroll
+ (m_CursorOffset.Y - Offset.Y));
if ((newH < Panel1.HorizontalScroll.Minimum)) {
newH = Panel1.HorizontalScroll.Minimum;
}
else if ((newH > Panel1.HorizontalScroll.Maximum)) {
newH = Panel1.HorizontalScroll.Maximum;
}
if ((newV < Panel1.VerticalScroll.Minimum)) {
newV = Panel1.VerticalScroll.Minimum;
}
else if ((newV > Panel1.VerticalScroll.Maximum)) {
newV = Panel1.VerticalScroll.Maximum;
}
Panel1.HorizontalScroll.Value = newH;
Panel1.VerticalScroll.Value = newV;
}
}
private void PictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) {
m_Scrolling = false;
}
}
* Code coverted from VB.NET to C# by CarlosAg.net[^]
Dave Kreskowiak
Microsoft MVP - Visual Basic
-- modified at 16:21 Thursday 13th July, 2006
|
|
|
|
|
A grat big thanks to everyone who replyed !!!!
It now works perfectly !
Thanks
|
|
|
|
|
I have a page redirect in which I pass a variable. I'd like to pass two, but not sure on the correct syntax. Here is what I have currently:
Response.Redirect ("Add_Cost.aspx?strPartNumberInputReference=" + strPartNumberInputReference);
Can someone help me with the correct syntax?
Thanks!
|
|
|
|
|
Query string paramaters are seperated by &
mypage.aspx?var1=1&var2=2&...
|
|
|
|
|
I like an own ToolStripItem trackbar that acts like a TrackBar. Can’t find any artickle how to do that…
All tips are welcomed!!
_____________________________
...and justice for all
APe
|
|
|
|
|
d00_ape wrote: All tips are welcomed!!
How about looking at the source code to one of the "control" ToolStripItems, e.g. the ComboBox one in Reflector. Then just code something similar but using a trackbar instead.
The Welsh will always support two teams: The Welsh, and anyone playing England
|
|
|
|
|
How do I convert a System.Drawign.Color to RGB int value?
_____________________________
...and justice for all
APe
|
|
|
|
|
See this:
int valueInRGB = Color.Red.ToArgb();
|
|
|
|