private void Control_Click(object sender, EventArgs e) { this.Focus(); int index = Controls.IndexOf((Control)sender); if (index == m_Selected && ToggleSelection) { index = -1; } SelectedIndex = index; UserSelected?.Invoke(this, EventArgs.Empty); }
private void SelectionPanel_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Left: case Keys.Up: if (m_Selected == -1) { SelectedIndex = Controls.Count - 1; UserSelected?.Invoke(this, EventArgs.Empty); } else if (m_Selected > 0) { int newSelection = m_Selected - 1; while (newSelection > 0 && Controls[m_Selected].Visible == false) { newSelection -= 1; } if (Controls[newSelection].Visible == false) { return; // failed to find any visible control in this direction } SelectedIndex = newSelection; UserSelected?.Invoke(this, EventArgs.Empty); // If m_Selected = 0 then no change } break; case Keys.Right: case Keys.Down: if (m_Selected == -1) { SelectedIndex = 0; UserSelected?.Invoke(this, EventArgs.Empty); } else if (m_Selected < Controls.Count - 1) { int newSelection = m_Selected + 1; while (newSelection < Controls.Count - 1 && Controls[newSelection].Visible == false) { newSelection += 1; } if (Controls[newSelection].Visible == false) { return; // failed to find any visible control in this direction } SelectedIndex = newSelection; UserSelected?.Invoke(this, EventArgs.Empty); } break; } }
private void TimerProc(object state) { // The state object is the Timer object. Timer t = (Timer)state; t.Dispose(); Console.WriteLine("The timer callback executes."); //----------------------------------------- // INVOKE A EVENT //----------------------------------------- UserSelected?.Invoke(this, "User1"); }
private void SurfaceOnMouseLeftButtonDown(object sender, MouseEventArgs e) { _mouseDownPosition = e.GetPosition(null); _mouseMoved = false; var time = DateTime.UtcNow.TimeOfDay; if ((time - _lastMouseDownTime).TotalMilliseconds < DoubleClickDelay) { _mouseMoved = true; var surface = (FrameworkElement)sender; var point = e.GetPosition(surface); var origin = _position + new Vector2( (float)((point.X / surface.ActualWidth * 2 - 1) / _scale * Aspect), (float)((1 - point.Y / surface.ActualHeight * 2) / _scale)) .Rotate(-_rotation); var minDistance = float.PositiveInfinity; _selectedUserId = -1; var nodes = _nodesBuffer.GetData(); for (var i = 0; i < _users.Length; i++) { var distance = (nodes[i].Position - origin).Length(); if (distance < PhotoRadius && distance < minDistance) { minDistance = distance; _selectedUserId = i; } } if (_selectedUserId != -1) { var user = _users[_selectedUserId].Model; UserSelected?.Invoke(user); UserNavigated?.Invoke(user); } } _lastMouseDownTime = time; }
private void ResultUser_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { UserSelected?.Invoke(null, ((ResultUser)sender).Mid); }
private void SurfaceOnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (_mouseMoved) { return; } var surface = (FrameworkElement)sender; var point = e.GetPosition(surface); var origin = _position + new Vector2( (float)((point.X / surface.ActualWidth * 2 - 1) / _scale * Aspect), (float)((1 - point.Y / surface.ActualHeight * 2) / _scale)) .Rotate(-_rotation); var prevSelectedId = _selectedUserId; var minDistance = float.PositiveInfinity; _selectedUserId = -1; var nodes = _nodesBuffer.GetData(); for (var i = 0; i < _users.Length; i++) { var distance = (nodes[i].Position - origin).Length(); if (distance < PhotoRadius && distance < minDistance) { minDistance = distance; _selectedUserId = i; } } if (prevSelectedId == _selectedUserId) { return; } for (var i = 0; i < _users.Length; i++) { nodes[i].Width = 1f; } _selectedEdgesBuffer?.Dispose(); _selectedEdgesBuffer = null; if (_selectedUserId != -1) { nodes[_selectedUserId].Width = SelectedPhotoWidth; foreach (var friend in _users[_selectedUserId].AllFriends) { nodes[friend].Width = SelectedFriendsPhotoWidth; } var edges = _users[_selectedUserId].AllFriends.Select(i => new EdgeVertex(_selectedUserId, i)).ToArray(); if (edges.Length != 0) { _selectedEdgesBuffer = Buffer.Structured.New(GraphicsDevice, edges); } UserSelected?.Invoke(_users[_selectedUserId].Model); } _nodesBuffer.SetData(nodes); _newNodesBuffer.SetData(nodes); }