Monday, January 28, 2008

VS.NET式的状态栏

我在Codeproject上找到一个VS.NET式的状态栏,但是它并不能很好的使用在我们的项目中,我将它做了一些改进,使之有了一定的灵活性。具体的,我改进了两个公共属性:
// 取得窗体上控件的屏幕坐标(以窗体的左上角为(0,0))
public System.Drawing.PointF Pos
{
get { return _Pos; }
set
{
_Pos = value;

int xStart = _MessagePanel.Width; // start x of the bounding box
FrmMain fm =new FrmMain();
//Graphics g = this.CreateGraphics();
Graphics g =fm.GetCurrentMap().CreateGraphics();
OnDrawItem(new StatusBarDrawItemEventArgs(g,Font,
new Rectangle(xStart,2,_PosPanel.Width-2,Height-1),1,DrawItemState.Default,_PosPanel));
g.Dispose();
}
}
// 消息面板的消息内容
public string Message
{
get { return _MessagePanel.Text; }
set
{
_MessagePanel.Text = value;

int xStart = 0;
Graphics g = this.CreateGraphics();
StatusBarDrawItemEventArgs ea = new StatusBarDrawItemEventArgs(this.CreateGraphics(),Font,
new Rectangle(xStart,2,_MessagePanel.Width-2,Height-1),1,DrawItemState.Default,_MessagePanel);
OnDrawItem(ea);
g.Dispose();
}
}

在调用的时候,我是这样用的:
#region [ 状态栏生成 ]
void SetupStatusBar()
{
_statusBar.Parent = this;
this._statusBar.Name = "statusBar1";
}
private void Supermap_main_MouseMoveEvent(object sender, AxSuperMapLib._DSuperMapEvents_MouseMoveEvent e)
{
AxSuperMapLib.AxSuperMap sm =this.GetCurrentMap();
_statusBar.Panels[1].Text =String.Format(" X:{0:F4}",sm.PixelToMapX(e.x)) + " "+ String.Format(" Y:{0:F4}",sm.PixelToMapY(e.y));
}
#endregion
///


/// 设置状态提示信息
///

/// 要显示的信息
private void GetStatusBarText(string str)
{
_statusBar.Panels[0].Text =" "+ str;
}


Related Posts



0 Comments:

 

gf

rgdfgfdg

gf

gf

gf