Example #1
0
        private void HeaderTextBlock_MouseLeftButtonDown(object sender, RoutedEventArgs e)
        {
            if (columnResizeInProgress)
            {
                return;
            }

            TextBlock tb = sender as TextBlock;

            Point pt = Mouse.GetPosition(tb);

            if (pt.X < 2 || pt.X > tb.ActualWidth - 2)
            {
                int col = (int)tb.GetValue(Grid.ColumnProperty);

                if (pt.X < 2)       // Dann die vorherige Spalte verkleinern
                {
                    col--;
                }

                pt = Mouse.GetPosition(GridHeader);

                clickedResizePosX = pt.X;

                clickedOriginalSizeX = GridHeader.ColumnDefinitions[col].ActualWidth;
                tb.CaptureMouse();
                columnResizeInProgress = true;
                clickedResizeColumn    = col;
                e.Handled = true;
            }
        }
Example #2
0
        public override void OnApplyTemplate()
        {
            _textBlock = (TextBlock)Template.FindName("TextBlock", this);

            var    originalPosition = new Point();
            double originalValue    = 0;
            var    mouseMoved       = false;

            _textBlock.MouseDown += (sender, e) =>
            {
                originalPosition = e.GetPosition(_textBlock);
                originalValue    = Value;
                _textBlock.CaptureMouse();
                mouseMoved = false;
            };

            _textBlock.MouseMove += (sender, e) =>
            {
                if (!_textBlock.IsMouseCaptured)
                {
                    return;
                }

                mouseMoved = true;

                var newPosition = e.GetPosition(_textBlock);
                Value = CoerceValue(originalValue + (newPosition.X - originalPosition.X) / 50.0);
            };

            _textBlock.MouseUp += (sender, e) =>
            {
                if (_textBlock.IsMouseCaptured)
                {
                    _textBlock.ReleaseMouseCapture();
                }

                if (!mouseMoved)
                {
                    Mode = NumericTextBoxMode.TextBox;
                    _textBox.SelectAll();
                    _textBox.Focus();
                }
            };

            _textBox        = (TextBox)Template.FindName("TextBox", this);
            _textBox.KeyUp += (sender, e) =>
            {
                if (e.Key == Key.Escape || e.Key == Key.Enter)
                {
                    Mode = NumericTextBoxMode.Normal;
                }
            };
            _textBox.LostFocus += (sender, e) => Mode = NumericTextBoxMode.Normal;

            base.OnApplyTemplate();
        }
Example #3
0
        public override void OnApplyTemplate()
        {
            _textBlock = (TextBlock)Template.FindName("TextBlock", this);

            var originalPosition = new System.Drawing.Point();
            var mouseMoved       = false;

            _textBlock.MouseDown += (sender, e) =>
            {
                originalPosition = System.Windows.Forms.Cursor.Position;
                _textBlock.CaptureMouse();
                Mouse.OverrideCursor = Cursors.None;
                mouseMoved           = false;
            };

            _textBlock.MouseMove += (sender, e) =>
            {
                if (!_textBlock.IsMouseCaptured)
                {
                    return;
                }

                mouseMoved = true;

                var newPosition = System.Windows.Forms.Cursor.Position;
                Value = CoerceValue(Value + (newPosition.X - originalPosition.X) / 50.0);

                System.Windows.Forms.Cursor.Position = originalPosition;
            };

            _textBlock.MouseUp += (sender, e) =>
            {
                Mouse.OverrideCursor = null;
                _textBlock.ReleaseMouseCapture();

                if (!mouseMoved)
                {
                    Mode = NumericTextBoxMode.TextBox;
                    _textBox.SelectAll();
                    _textBox.Focus();
                }
            };

            _textBox        = (TextBox)Template.FindName("TextBox", this);
            _textBox.KeyUp += (sender, e) =>
            {
                if (e.Key == Key.Escape || e.Key == Key.Enter)
                {
                    Mode = NumericTextBoxMode.Normal;
                }
            };
            _textBox.LostFocus += (sender, e) => Mode = NumericTextBoxMode.Normal;

            base.OnApplyTemplate();
        }
Example #4
0
        /// <summary>
        /// TextBlock拖拽功能->按下
        /// </summary>
        private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            TextBlock _TB = (TextBlock)sender;

            _TB.CaptureMouse();
            _TB.Cursor     = Cursors.None;
            _TB.MouseMove += TextBlock_MouseMove;
            //获取鼠标与文本的相对坐标
            textPoint = e.GetPosition(_TB);
            //计算文本在网格中可移动的最大坐标
            gridMaxPoint = new Point(expressGrid.ActualWidth - _TB.ActualWidth - edge, expressGrid.ActualHeight - _TB.ActualHeight);
            e.Handled    = true;//防止事件传递到 Grid_MouseLeftButtonDown
        }
        private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            TextBlock txt = sender as TextBlock;

            if (txt == xTitle)
            {
                operatTitle = 0;
                curValue    = vec.x;
            }
            else if (txt == yTitle)
            {
                operatTitle = 1;
                curValue    = vec.y;
            }
            else if (txt == zTitle)
            {
                operatTitle = 2;
                curValue    = vec.z;
            }
            _mouseDown = true;
            txt.CaptureMouse();
            _mouseXpos = e.GetPosition(null).X;
        }
Example #6
0
        private void createComponentRow(PropertyInfo prop, int row, PropertyFieldAttribute attr)
        {
            IList <ComponentRef> componentList = prop.GetValue(_selectedObject) as IList <ComponentRef>;
            Type comType = typeof(ComponentRef);

            for (int i = 0; i < componentList.Count; i++)
            {
                gridAddRowDef();
                CheckBox check = createCheckBox();
                check.IsChecked  = componentList[i].GetIsActive();
                check.Tag        = componentList[i];
                check.Checked   += Check_Checked;
                check.Unchecked += Check_Unchecked;
                gridAddTitle(15, componentList[i].GetName());
                gridAddEnd();
                ComponentRef          com       = componentList[i];
                List <ComponentField> fieldList = com.GetFields();
                for (int j = 0; j < fieldList.Count; j++)
                {
                    gridAddRowDef();
                    TextBlock title = gridAddTitle(30, fieldList[j].Name);
                    if ((fieldList[j].Type & ComponentFieldType.FT_FLOAT) == ComponentFieldType.FT_FLOAT ||
                        (fieldList[j].Type & ComponentFieldType.FT_INT) == ComponentFieldType.FT_INT)
                    {
                        NumberTextBox tb = createNumberTextBox();
                        tb.Text    = fieldList[j].Value;
                        tb.Tag     = fieldList[j];
                        tb._KeyUp += comNumTb__KeyUp;
                        title.Tag  = fieldList[j];
                        float value = Convert.ToSingle(fieldList[j].Value);
                        title.MouseLeftButtonDown += new MouseButtonEventHandler((object sender, MouseButtonEventArgs e) =>
                        {
                            _mouseDown = true;
                            _mousePosX = e.GetPosition(null).X;
                            title.CaptureMouse();
                        });
                        title.MouseMove += new MouseEventHandler((object sender, MouseEventArgs e) =>
                        {
                            if (_mouseDown)
                            {
                                double xPos      = e.GetPosition(null).X;
                                ComponentField f = (sender as TextBlock).Tag as ComponentField;
                                if ((f.Type & ComponentFieldType.FT_READONLY) == ComponentFieldType.FT_READONLY)
                                {
                                    return;
                                }
                                if ((f.Type & ComponentFieldType.FT_FLOAT) == ComponentFieldType.FT_FLOAT)
                                {
                                    if (xPos > _mousePosX)
                                    {
                                        value += 0.01f;
                                    }
                                    else if (xPos < _mousePosX)
                                    {
                                        value -= 0.01f;
                                    }
                                }
                                else if ((f.Type & ComponentFieldType.FT_INT) == ComponentFieldType.FT_INT)
                                {
                                    if (xPos > _mousePosX)
                                    {
                                        value += 1;
                                    }
                                    else if (xPos < _mousePosX)
                                    {
                                        value -= 1;
                                    }
                                }
                                tb.Text = value.ToString();
                                f.SetValue(tb.Text);
                                _mousePosX = xPos;
                            }
                        });
                        title.MouseLeftButtonUp += new MouseButtonEventHandler((object sender, MouseButtonEventArgs e) =>
                        {
                            _mouseDown = false;
                            _mousePosX = 0;
                            title.ReleaseMouseCapture();
                        });
                    }
                    else if (fieldList[j].Type == ComponentFieldType.FT_OBJECT)
                    {
                        TextBox tb = createTextBox(true);
                        tb.Tag    = fieldList[j];
                        tb.KeyUp += comTb_KeyUp;
                        tb.Text   = fieldList[j].Value;
                    }
                    else if (fieldList[j].Type == ComponentFieldType.FT_BOOLEAN)
                    {
                        ComboBox cb = createBoolControl();
                        cb.Tag = fieldList[j];
                        cb.SelectionChanged += comCb_SelectionChanged;
                        cb.SelectedIndex     = fieldList[j].Value == "true" ? 0 : 1;
                    }
                    else if (fieldList[j].Type == ComponentFieldType.FT_VECTOR3)
                    {
                        var      vecElement = new Vector3Control();
                        string[] vStr       = fieldList[j].Value.Split(',');
                        Vector3  vec        = new Vector3(Convert.ToSingle(vStr[0]), Convert.ToSingle(vStr[1]), Convert.ToSingle(vStr[2]));
                        vecElement.ValueObject     = vec;
                        vecElement.Margin          = new Thickness(0, 2, 2, 0);
                        vecElement.BorderThickness = new Thickness(0);
                        vecElement.Tag             = fieldList[j];
                        Grid.SetColumn(vecElement, 1);
                        Grid.SetRow(vecElement, _panelParent.RowDefinitions.Count - 1);
                        var template = (ControlTemplate)_View.Resources["validationErrorTemplate"];
                        Validation.SetErrorTemplate(vecElement, template);
                        vecElement.EnterKeyDown += VecElement_EnterKeyDown;
                        _panelParent.Children.Add(vecElement);
                    }
                    else
                    {
                        TextBox tb = createTextBox(false);
                        tb.Tag    = fieldList[j];
                        tb.KeyUp += comTb_KeyUp;
                        tb.Text   = fieldList[j].Value;
                    }
                    gridAddEnd();
                }
            }
        }
 private void box_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     draggedBox    = sender as TextBlock;
     clickPosition = e.GetPosition(draggedBox);
     draggedBox.CaptureMouse();
 }