using System;
using System.Drawing;
using System.Windows.Forms;
namespace IStation.WinFrmUI
{
public partial class VerifySliderPanel : Panel
{
public VerifySliderPanel()
{
InitializeComponent();
//Initial();
}
public void Initial()
{
InitForm();
InitContent();
SizeChanged += (sender, e) =>
{
_sliderBackColor.Left = 0;
_lblTip.Left = ClientSize.Width / 2 - _lblTip.Width / 2;
_lblSuccessTip.Left = ClientSize.Width / 2 - _lblSuccessTip.Width / 2;
_picSlider.Left = 0;
};
}
public void SetStatusInfo(Color color, string info , bool isOk = false)
{
this.BackColor = color;
_lblSuccessTip.Text = info;
if (isOk)
{
_picSlider.SliderImage = IStation.WinFrmUI.Properties.Resources.right;
}
else
{
_picSlider.SliderImage = IStation.WinFrmUI.Properties.Resources.exclamationc32;
}
}
#region method
///
/// 在picturebox的鼠标按下事件里,记录两个变量
///
///
///
private void Pic_MouseDown(object sender, MouseEventArgs e)
{
_moveFlag = true;
}
///
/// 在picturebox的鼠标按下事件里
///
///
///
private void Pic_MouseUp(object sender, MouseEventArgs e)
{
_moveFlag = false;
if (!_successSlider)
{
_picSlider.Left = 0;
_sliderBackColor.Width = 0;
}
else
{
_picSlider.SliderImage = IStation.WinFrmUI.Properties.Resources.right;
_lblSuccessTip.ForeColor = Color.AliceBlue;// Color.FromArgb(102, 255, 178);
_lblSuccessTip.Text = "验证成功";
SliderSuccessEvent(true);
}
}
//在picturebox鼠标移动
private void Pic_MouseMove(object sender, MouseEventArgs e)
{
if (_moveFlag)
{
_picSlider.Top = 0;
if (_picSlider.Left >= 0 && _picSlider.Left <= ClientSize.Width - _picSlider.Width - 1)
{
_picSlider.Left += Convert.ToInt16(e.X);
_sliderBackColor.Width = _picSlider.Left;
_sliderBackColor.BringToFront();
_picSlider.BringToFront();
return;
}
if (_picSlider.Left < 0)
{
_picSlider.Left = 0;
return;
}
if (_picSlider.Left > ClientSize.Width - _picSlider.Width)
{
_picSlider.Left = ClientSize.Width - _picSlider.Width;
}
_sliderBackColor.Visible = false;
this.ForeColor = Color.White;
this.BackColor = Color.FromArgb(0, 139, 0);//拖到底, 成功后的颜色
_successSlider = true;
_picSlider.SetBorderColor(Color.FromArgb(0, 139, 0));
}
}
#endregion
#region property
private Label _lblTip;
private Label _lblSuccessTip;
private ImageSliderPanel _picSlider;
private Panel _sliderBackColor;
bool _successSlider = false;//是否滑动到最右侧
bool _moveFlag;//是否已经按下.
private string _sliderTipInfo = "请拖动左侧滑块";
public string SliderTipInfo
{
get { return _sliderTipInfo; }
set { _sliderTipInfo = value; }
}
#endregion
#region 窗口初始化
private void InitForm()
{
DoubleBuffered = true;
Height = 40;
Width = 290;
Font = new Font("微软雅黑", 12, GraphicsUnit.Pixel);
BackColor = Color.FromArgb(100, 149, 237);//开始时的背景色,还未拖动时
}
private void InitContent()
{
_sliderBackColor = new Panel
{
Parent = this,
Width = 1,
Height = 40,
ForeColor = Color.White,
BackColor = Color.FromArgb(0, 191, 255)//拖动后, 左侧的背景色
};
_lblTip = new Label
{
Parent = _sliderBackColor,
Text = _sliderTipInfo,
AutoSize = true,
ForeColor = Color.Black
};
_lblTip.Top = ClientSize.Height / 2 - _lblTip.Height / 2;
_lblSuccessTip = new Label
{
Parent = this,
Text = _sliderTipInfo,
AutoSize = true,
ForeColor = Color.White
};
_lblSuccessTip.Top = ClientSize.Height / 2 - _lblSuccessTip.Height / 2;
_picSlider = new ImageSliderPanel
{
Parent = this,
Cursor = Cursors.Hand,
SliderImage = IStation.WinFrmUI.Properties.Resources.arrow,
Size = new Size(40, 40),
BorderStyle = BorderStyle.FixedSingle,
ForeColor = Color.White,
BackColor = Color.FromArgb(255, 255, 255),//小滑块的颜色
Top = 0
};
_picSlider.BringToFront();
_picSlider.MouseUpEvent += Pic_MouseUp;
_picSlider.MouseDownEvent += Pic_MouseDown;
_picSlider.MouseMoveEvent += Pic_MouseMove;
}
#endregion
#region event
public delegate void SliderSuccessEventHandler(bool sliderSuccess);
public event SliderSuccessEventHandler SliderSuccessEvent;
#endregion
}
}