public AppMotionAxisCtrl(AppRealAxis axis, bool isInvertDir, bool isRelative)
        {
            _axis        = axis;
            _isInvertDir = isInvertDir;
            _isRelative  = isRelative;
            InitializeComponent();
            gbAxis.Text = _axis.Name;

            _floatingForm = new Form();
            _floatingForm.ShowInTaskbar = false;
            _floatingForm.TopMost       = true;

            _floatingForm.FormClosing += new FormClosingEventHandler(_floatingForm_FormClosing);
            _floatingForm.Hide();


            mDJogStep.BindTwoWay(() => _axis.JogStep);
            mDCurrentPosition.BindTwoWay(() => _axis.CurrentPosition);
            mCbEnableAxis.BindTwoWay(() => _axis.Enabled);

            BoolInputsCtl inputsCtl = new BoolInputsCtl();

            inputsCtl.Bind = _axis.SafetyInputs;
            inputsCtl.Dock = DockStyle.Fill;
            panelSafetyInputs.Controls.Add(inputsCtl);

            this.PreventDispose = true;
        }
        public AppIOCtrl() : base()
        {
            InitializeComponent();
            _inputs  = U.GetComponent(AppConstStaticName.INPUTS) as Inputs;
            _outputs = U.GetComponent(AppConstStaticName.OUTPUTS) as Outputs;

            BoolInputsCtl inputsCtl = new BoolInputsCtl();

            inputsCtl.Bind = _inputs;
            inputsCtl.Dock = DockStyle.Fill;
            panelInputs.Controls.Add(inputsCtl);

            BoolOutputsCtl outputsCtl = new BoolOutputsCtl();

            outputsCtl.Bind = _outputs;
            outputsCtl.Dock = DockStyle.Fill;
            panelOutputs.Controls.Add(outputsCtl);
        }