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; } }
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(); }
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(); }
/// <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; }
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(); }