Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Honorable mention to Thomas Eyde. His submission uses a new class, so he gets points for trying to be OO. I don't think this approach was fruitfull, though; the result is pretty complex to my eyes.
He’s also the only one who submitted legal code. Every other submission had problems that a compiler would have a hard time with.
Here’s Thomas’s submission, pretty printed for your enjoyment:
using System.Windows.Forms;
using System.Drawing;
class C : Form
{
Button _buttonOK;
Button _buttonCancel;
void F()
{
int margin = 12;
ControlMover okMover = new ControlMover(_buttonOK, this.ClientSize, margin);
okMover.MoveLeft();
okMover.MoveUp();
ControlMover cancelMover = new ControlMover(_buttonCancel, _buttonOK.Location, margin);
cancelMover.MoveLeft();
}
}
class ControlMover
{
Control _control;
int _margin;
public ControlMover(Control c, Point location, int margin)
{
_margin = margin;
_control = c;
_control.Location = location;
}
public ControlMover(Control c, Size location, int margin)
: this (c, new Point(location), margin)
{
}
public void MoveLeft(int delta)
{
_control.Location = Offset(-delta - _margin, 0);
}
Point Offset(int deltaX, int deltaY)
{
Point location = _control.Location;
location.Offset(deltaX, deltaY);
return location;
}
public void MoveLeft()
{
MoveLeft(_control.Width);
}
public void MoveUp(int delta)
{
_control.Location = Offset(0, -delta - _margin);
}
public void MoveUp()
{
MoveUp(_control.Height);
}
}
Does it work? I’m not really sure. I hoped that the clearest solution would be trivial to verify by inspection.
It looks to me like it places the OK button in the bottom-right corner of the form, with the Cancel button to its left. That’s not what I asked for, but it’s OK because:
· It’s easy to see by inspection.
· It’s probably easy to fix.
Those last bullets are indications that Thomas got something right.
Comments
- Anonymous
March 24, 2004
Thank you for the kudos.
I know the buttons are misplaced. I didn't care to fix it when I discovered the mistake.
Yes, the code works. I have never moved controls in code, so it took some investigation and trial and error.
I would use a little more energy to make the code clearer if it were production code.