S&box Wiki

Revision Difference

ui-events-and-input#548164

<cat>UI.Intro</cat> <title>Events and Input</title> ## Panel Events & Input # Events Panels can listen for events, here's the current list: | Event | Description | |-------------------|-----| | onclick | Called when left clicking on a panel | | onmiddleclick | Called when middle clicking on a panel | | onrightclick | Called when right clicking on a panel | | onmousedown | Called when any mouse button is pressed this frame | | onmouseup | Called when any mouse button is released this frame | | ondoubleclick | Called when a panel is double clicked on | | onmousemove | Called every frame where your mouse is moving inside of a panel | | onmouseover | Called when your mouse enters the bounds of a panel | | onmouseout | Called when your mouse exits the bounds of a panel | | onfocus | Called when the panel comes into focus | | onblur | Called when the panel loses focus | | onback | Called when you click the Back button on your mouse | | onforward | Called when you click the Forward button on your mouse | **Warning**: You may have to disable pointer events on overlapping transparent GUI elements for events to trigger! ## Usage ```csharp panel.AddEventListener( "onclick", e => Log.Info( "I clicked my panel!" ) ); ``` # Class Overrides All panels have these available virtual methods for you to override, if you choose not to use events. ```csharp protected virtual void OnClick( MousePanelEvent e ) protected virtual void OnMiddleClick( MousePanelEvent e ) protected virtual void OnRightClick( MousePanelEvent e ) protected virtual void OnMouseDown( MousePanelEvent e ) protected virtual void OnMouseUp( MousePanelEvent e ) protected virtual void OnMouseMove( MousePanelEvent e ) protected virtual void OnDoubleClick( MousePanelEvent e ) protected virtual void OnMouseOver( MousePanelEvent e ) protected virtual void OnMouseOut( MousePanelEvent e ) protected virtual void OnBack( PanelEvent e ) protected virtual void OnForward( PanelEvent e ) protected virtual void OnFocus( PanelEvent e ) protected virtual void OnBlur( PanelEvent e ) ``` ⤶ ⤶ ## Adding a text entry⤶ ⤶ This is an exemple of the usage of the `Add.TextEntry(string name)`.⤶ ⤶ Source: base gamemode - /code/UI/Chat.cs⤶ ⤶ ⤶ ```cs⤶ using Sandbox.UI.Construct;⤶ using System;⤶ ⤶ namespace Sandbox.UI⤶ {⤶ public partial class ChatBox : Panel⤶ {⤶ static ChatBox Current;⤶ ⤶ public Panel Canvas { get; protected set; }⤶ public TextEntry Input { get; protected set; }⤶ ⤶ public ChatBox()⤶ {⤶ Current = this;⤶ ⤶ StyleSheet.Load( "/ui/chat/ChatBox.scss" );⤶ ⤶ Canvas = Add.Panel( "chat_canvas" );⤶ ⤶ Input = Add.TextEntry( "" );⤶ Input.AddEventListener( "onsubmit", () => Submit() );⤶ Input.AddEventListener( "onblur", () => Close() );⤶ Input.AcceptsFocus = true;⤶ Input.AllowEmojiReplace = true;⤶ }⤶ ⤶ void Open()⤶ {⤶ AddClass( "open" );⤶ Input.Focus();⤶ }⤶ ⤶ void Close()⤶ {⤶ RemoveClass( "open" );⤶ Input.Blur();⤶ }⤶ }⤶ }⤶ ```