|
how to i recalculate the location? do i have to so some division or multiplication or somthing./
|
|
|
|
|
You do not need to any calculations if you do proper anchoring. It will solve the purpose. Use TableLayoutPanel in case you find it difficult to anchor controls as such.
|
|
|
|
|
anchoring changes the size of the control to center i thought? imho if you want to center the control without changing its size, you have to recalc.
Tiefe Brunnen muss man graben wenn man klares Wasser will,
tiefe Wasser sind nicht still.
|
|
|
|
|
<blockquote class="FQ"><div class="FQA">sunspeed wrote:</div>imho</blockquote>
What does this mean?
If used smartly, anchoring can help you postion the control to centre the control with or without resizing.
I have created a sample form in which control will be at centre(and of same size) regardless of how you resize the form.
|
|
|
|
|
Could you send me the code? Thats interesting.
I have not found this possibility.
imho means "in my humble opinion"
Tiefe Brunnen muss man graben wenn man klares Wasser will,
tiefe Wasser sind nicht still.
|
|
|
|
|
Here it is:
using System;<br />
using System.Collections.Generic;<br />
using System.ComponentModel;<br />
using System.Data;<br />
using System.Drawing;<br />
using System.Text;<br />
using System.Windows.Forms;<br />
<br />
namespace CPProj {<br />
public partial class Anchoring : Form {<br />
<br />
#region Constructors<br />
public Anchoring() {<br />
InitializeComponent();<br />
}
#endregion<br />
<br />
#region Code from Designer File<br />
<br />
private System.ComponentModel.IContainer components = null;<br />
<br />
protected override void Dispose(bool disposing) {<br />
if(disposing && (components != null)) {<br />
components.Dispose();<br />
}<br />
base.Dispose(disposing);<br />
}<br />
<br />
private void InitializeComponent() {<br />
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();<br />
this.grpSample = new System.Windows.Forms.GroupBox();<br />
this.btnSample = new System.Windows.Forms.Button();<br />
this.tableLayoutPanel1.SuspendLayout();<br />
this.grpSample.SuspendLayout();<br />
this.SuspendLayout();<br />
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)<br />
| System.Windows.Forms.AnchorStyles.Left)<br />
| System.Windows.Forms.AnchorStyles.Right)));<br />
this.tableLayoutPanel1.ColumnCount = 3;<br />
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));<br />
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 110F));<br />
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));<br />
this.tableLayoutPanel1.Controls.Add(this.grpSample, 1, 1);<br />
this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 12);<br />
this.tableLayoutPanel1.Name = "tableLayoutPanel1";<br />
this.tableLayoutPanel1.RowCount = 3;<br />
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));<br />
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 110F));<br />
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));<br />
this.tableLayoutPanel1.Size = new System.Drawing.Size(277, 242);<br />
this.tableLayoutPanel1.TabIndex = 0;<br />
this.grpSample.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)<br />
| System.Windows.Forms.AnchorStyles.Left)<br />
| System.Windows.Forms.AnchorStyles.Right)));<br />
this.grpSample.BackColor = System.Drawing.SystemColors.ControlText;<br />
this.grpSample.Controls.Add(this.btnSample);<br />
this.grpSample.Location = new System.Drawing.Point(86, 69);<br />
this.grpSample.Name = "groupBox1";<br />
this.grpSample.Size = new System.Drawing.Size(104, 104);<br />
this.grpSample.TabIndex = 0;<br />
this.grpSample.TabStop = false;<br />
this.grpSample.Text = "groupBox1";<br />
this.btnSample.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)<br />
| System.Windows.Forms.AnchorStyles.Left)<br />
| System.Windows.Forms.AnchorStyles.Right)));<br />
this.btnSample.Location = new System.Drawing.Point(6, 31);<br />
this.btnSample.Name = "button1";<br />
this.btnSample.Size = new System.Drawing.Size(75, 23);<br />
this.btnSample.TabIndex = 0;<br />
this.btnSample.Text = "button1";<br />
this.btnSample.UseVisualStyleBackColor = true;<br />
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);<br />
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;<br />
this.ClientSize = new System.Drawing.Size(292, 266);<br />
this.Controls.Add(this.tableLayoutPanel1);<br />
this.MinimumSize = new System.Drawing.Size(200, 200);<br />
this.Name = "Anchoring";<br />
this.Text = "Anchoring";<br />
this.tableLayoutPanel1.ResumeLayout(false);<br />
this.grpSample.ResumeLayout(false);<br />
this.ResumeLayout(false);<br />
<br />
}<br />
<br />
<br />
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;<br />
private System.Windows.Forms.GroupBox grpSample;<br />
private System.Windows.Forms.Button btnSample;<br />
#endregion<br />
}
}
|
|
|
|
|
ah, ok you use the TableLayoutPanel thats one possiblity.
Thanks for that example!
cheers
Tiefe Brunnen muss man graben wenn man klares Wasser will,
tiefe Wasser sind nicht still.
|
|
|
|
|
youp, heres a example.
<br />
Point newLocation = new Point();<br />
newLocation.X = (int)(this.Width - groupBox1.Width) / 2;<br />
newLocation.Y = (int)(this.Height - groupBox1.Height) / 2;<br />
groupBox1.Location = newLocation;<br />
Tiefe Brunnen muss man graben wenn man klares Wasser will,
tiefe Wasser sind nicht still.
|
|
|
|
|
Hi Guys. I need a little help with calculating a list of numbers. I'm importing a list of numbers and I would like to calculate the sum of these.
an example of this list of numbers is as follows.
<br />
300145639<br />
2240154504<br />
53370705579<br />
1984209469<br />
540191077<br />
1322660604<br />
I have this small bit of code which I know is wrong. Could somebody please guide me on how to do this corretly? I don't seem to get the correct total when running this. Any help would be greatly appreciated.
foreach (imphash hsh in res)
{
CalculateNum(hsh.Field1.ToString());
}
}
void CalculateNum(string list)
{
int sum = 0;
for (int i = 0; i < list.Length; i++)
{
sum += Convert.ToInt32(list);
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
}
}
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
This would be my solution... I don't know how large the file is, so you may end up with an overflow exception
<br />
foreach (line in file)<br />
{<br />
Sum += String2Long(line);<br />
}<br />
<br />
private long String2Long(string Input)<br />
{<br />
long Value = 0;<br />
if (Input == null)<br />
throw new Exception("Input is empty");<br />
<br />
if (!long.TryParse(Input, out Value))<br />
throw new Exception("Conversion failed");<br />
<br />
return Value;<br />
}<br />
|
|
|
|
|
Your code is right, except that because you have so many large numbers, your number will overflow and thus come out with too small a result. Try using long instead of int, if it still happens, then you need to look into libraries that support super large numbers.
Christian Graus
Please read this if you don't understand the answer I've given you
"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 )
|
|
|
|
|
Thanks Christian. I did this and for some strange reason I only get the last number in the list returned instead of the sum of all the numbers.
foreach (imphash hsh in res)
{
txtboxdisplay.Text += hsh.Field1 + Environment.NewLine;
CalculateNum(hsh.Field1.ToString());
}
}
void CalculateNum(string list)
{
long sum = 0;
for (long i = 0; i < list.Length; i++)
{
sum += Convert.ToInt32(list);
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
}
}
I have also noticed that it seems to itterate throught the CalculateNum function a number of times before returning to foreach(imphash hsh in res) .
These are the values in the file that I'm importing. (Just a few numbers for testing)
300145639
1984209469
540191077
1322660604
The sum returned is 13226606040. I'm expecting it to return 4147206789.
Anything else I might be missing?
Thanks for helping.
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
Your code is summing up 10 times the last string passed (i.e. 1322660604).
(10 is the number of characters the string has). Probably you need something similar to
long sum = 0;
foreach (imphash hsh in res)
{
txtboxdisplay.Text += hsh.Field1 + Environment.NewLine;
sum += Convert.ToInt32( hsh.Field1.ToString());
}
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
HI mate. I am doing that in the calculation functions. I pass the hsh.Field1.ToString() to the CalculateNum function.
void CalculateNum(string list)
{
long sum = 0;
for (long i = 0; i < list.Length; i++)
{
sum += Convert.ToInt32(list);
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
}
}
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
That's wrong, I already pointed out why.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Cool. I have ammended and now I get an OverflowException was unhandled error. Value was either too large or too small for an Int32. Is there something else I can cast the value to?
I used Int64 and that worked but I still get the result 10* the actual answer? Any ideas?
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
|
I am using Int64 and long but It appears to itterating 10 times. Not sure why.
long sum = 0;
foreach (imphash hsm in res)
{
sum += Convert.ToInt64(hsm.Field1.ToString());
CalculateNum(sum);
}
}
void CalculateNum(long list)
{
long sum = 0;
for (long i = 0; i < list.ToString().Length; i++)
{
sum += Convert.ToInt64(list);
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
}
}
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
Kwagga wrote:
long sum = 0;
foreach (imphash hsm in res)
{
sum += Convert.ToInt64(hsm.Field1.ToString());
CalculateNum(sum);
}
}
void CalculateNum(long list)
{
long sum = 0;
for (long i = 0; i < list.ToString().Length; i++)
{
sum += Convert.ToInt64(list);
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
}
}
long sum = 0;
foreach (imphash hsm in res)
{
sum += Convert.ToInt64(hsm.Field1.ToString());
}
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Ah, now I understand. You said this earlier. It works now.
Thanks
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
One last question. What if Int64 and long is too short? What I am doing is the following.
I have a list of 100 000 records which are all long numbers and can be upto 11 digits long some of them. Now, I need to calculate a total for them, add them all together. The ansrew I think can be upto 16 digits long but it seems like Int64 only returns 13 digits.
Anyway, I can use something else that would return a much bigger value?
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
Christian Graus wrote: Your code is right,
No, its not. Look again!
|
|
|
|
|
I think my problem here is the foreach loop. DO I need to use foreach ? Can I structure this different to not use a foreach loop and avoid it from itterating so many times?
Code again:
long sum = 0;
foreach (imphash hsm in res)
{
sum += Convert.ToInt64(hsm.Field1.ToString());
CalculateNum(sum);
}
}
void CalculateNum(long list)
{
long sum = 0;
for (long i = 0; i < list.ToString().Length; i++)
{
sum += Convert.ToInt64(list);
txtboxdsptxt.Text =(sum.ToString() + Environment.NewLine);
}
}
Excellence is doing ordinary things extraordinarily well.
|
|
|
|
|
Kwagga, this has been answered 3 times now. Im not sure what it is you're not getting about this seemingly simple task. You have a list of numbers as strings, parse each number into an integer (as discussed you may need a bigger integer than int so use long) and sum them.
What your code does:
1) for each number in the list
2) parse it to a long
( good so far but... )
3) send the long to a method which converts it back to a string (list.ToString() )
4) go character by character of the number and convert the original long back to a long (sum += Convert.ToInt64(list); )
( its getting worse... )
5) sum the number again.
For the final time (i hope) the second method is supervlous.
long sum = 0;
foreach (imphash hsm in res)
{
sum += Convert.ToInt64(hsm.Field1.ToString());
}
txtboxdsptxt.Text =(sum.ToString());
|
|
|
|
|
Thanks mate. However,Int64 is not bog enough for the result. Anything else that would be big enough? Int64 only returns a 13 digit number causing it not to calculate correctly.
Excellence is doing ordinary things extraordinarily well.
|
|
|
|