Here are the examples of the csharp api System.Action.Invoke(char) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
22 Examples
19
Source : CustomUIKeyboard.cs
with MIT License
from andruzzzhka
with MIT License
from andruzzzhka
public void Awake()
{
_keyButtonPrefab = Resources.FindObjectsOfTypeAll<TextMeshProButton>().First(x => x.name == "KeyboardButton");
string[] array = new string[]
{
"q",
"w",
"e",
"r",
"t",
"y",
"u",
"i",
"o",
"p",
"a",
"s",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
"z",
"x",
"c",
"v",
"b",
"n",
"m",
"<-",
"space",
"OK",
"Cancel"
};
for (int i = 0; i < array.Length; i++)
{
RectTransform parent = transform.GetChild(i) as RectTransform;
//TextMeshProButton textMeshProButton = Instantiate(_keyButtonPrefab, parent);
TextMeshProButton textMeshProButton = parent.GetComponentInChildren<TextMeshProButton>();
textMeshProButton.text.text = array[i];
RectTransform rectTransform = textMeshProButton.transform as RectTransform;
rectTransform.localPosition = Vector2.zero;
rectTransform.localScale = Vector3.one;
rectTransform.ancreplaceddPosition = Vector2.zero;
rectTransform.anchorMin = Vector2.zero;
rectTransform.anchorMax = Vector3.one;
rectTransform.offsetMin = Vector2.zero;
rectTransform.offsetMax = Vector2.zero;
Navigation navigation = textMeshProButton.button.navigation;
navigation.mode = Navigation.Mode.None;
textMeshProButton.button.navigation = navigation;
textMeshProButton.button.onClick.RemoveAllListeners();
if (i < array.Length - 4)
{
string key = array[i];
textMeshProButton.button.onClick.AddListener(delegate ()
{
textKeyWasPressedEvent?.Invoke(key[0]);
});
}
else if (i == array.Length - 4)
{
textMeshProButton.button.onClick.AddListener(delegate ()
{
deleteButtonWasPressedEvent?.Invoke();
});
}
else if (i == array.Length - 1)
{
(textMeshProButton.transform as RectTransform).sizeDelta = new Vector2(7f, 1.5f);
_cancelButton = textMeshProButton.button;
_cancelButton.gameObject.SetActive(!HideCancelButton);
textMeshProButton.button.onClick.AddListener(delegate ()
{
cancelButtonWasPressedEvent?.Invoke();
});
}
else if (i == array.Length - 2)
{
_okButton = textMeshProButton.button;
_okButton.interactable = OkButtonInteractivity;
textMeshProButton.button.onClick.AddListener(delegate ()
{
okButtonWasPressedEvent?.Invoke();
});
}
else
{
textMeshProButton.button.onClick.AddListener(delegate ()
{
textKeyWasPressedEvent?.Invoke(' ');
});
}
}
name = "CustomUIKeyboard";
(transform as RectTransform).ancreplaceddPosition -= new Vector2(0f, 0f);
for (int i = 1; i <= 10; i++)
{
TextMeshProButton textButton = Instantiate(_keyButtonPrefab);
textButton.text.text = (i % 10).ToString();
string key = (i % 10).ToString();
textButton.button.onClick.AddListener(delegate ()
{
textKeyWasPressedEvent?.Invoke(key[0]);
});
RectTransform buttonRect = textButton.GetComponent<RectTransform>();
RectTransform component2 = transform.GetChild(i - 1).gameObject.GetComponent<RectTransform>();
RectTransform buttonHolder = Instantiate(component2, component2.parent, false);
Destroy(buttonHolder.GetComponentInChildren<Button>().gameObject);
buttonHolder.ancreplaceddPosition -= new Vector2(0f, -10.5f);
buttonRect.SetParent(buttonHolder, false);
buttonRect.localPosition = Vector2.zero;
buttonRect.localScale = Vector3.one;
buttonRect.ancreplaceddPosition = Vector2.zero;
buttonRect.anchorMin = Vector2.zero;
buttonRect.anchorMax = Vector3.one;
buttonRect.offsetMin = Vector2.zero;
buttonRect.offsetMax = Vector2.zero;
}
}
19
Source : StreamReplacement.cs
with MIT License
from chillersanim
with MIT License
from chillersanim
public void Flush()
{
foreach (var c in buffer)
{
output(c);
}
buffer.Clear();
maskPosition = 0;
}
19
Source : StreamReplacement.cs
with MIT License
from chillersanim
with MIT License
from chillersanim
private void AddUnverifiedCharacter(char c)
{
buffer.Add(c);
maskPosition++;
if (maskPosition == mask.Length)
{
buffer.Clear();
maskPosition = 0;
foreach (var repChar in replacement)
{
output(repChar);
}
}
}
19
Source : StreamReplacement.cs
with MIT License
from chillersanim
with MIT License
from chillersanim
private void WritePartOfBuffer(int count)
{
for (var i = 0; i < count; i++)
{
output(buffer[i]);
}
}
19
Source : SearchKeyboard.cs
with MIT License
from chrislee0419
with MIT License
from chrislee0419
protected void InvokeTextButtonPressed(char c) => TextButtonPressed?.Invoke(c);
19
Source : SearchKeyboardManager.cs
with MIT License
from chrislee0419
with MIT License
from chrislee0419
protected virtual void Awake()
{
// NOTE: this should be called after initializing the components in the derived clreplaced's overridden Awake
if (_predictionBar != null)
{
_predictionBar.PredictionPressed += delegate (string query, SuggestionType type)
{
_searchText = query;
_textDisplayComponent.text = _searchText.ToUpper() + CursorText;
_predictionBar.ClearAndSetPredictionButtons(_searchText);
PredictionPressed?.Invoke(query, type);
};
}
if (_keyboard != null)
{
_keyboard.TextButtonPressed += delegate (char key)
{
_searchText += key.ToString();
SetDisplayedText(_searchText);
_predictionBar.ClearAndSetPredictionButtons(_searchText);
TextKeyPressed?.Invoke(key);
};
_keyboard.DeleteButtonPressed += delegate
{
if (_searchText.Length > 0)
_searchText = _searchText.Substring(0, _searchText.Length - 1);
SetDisplayedText(_searchText);
_predictionBar.ClearAndSetPredictionButtons(_searchText);
DeleteButtonPressed?.Invoke();
};
_keyboard.ClearButtonPressed += delegate
{
_searchText = "";
_textDisplayComponent.text = PlaceholderText;
_predictionBar.ClearAndSetPredictionButtons(_searchText);
ClearButtonPressed?.Invoke();
};
_keyboard.FilterButtonPressed += () => FilterButtonPressed?.Invoke();
}
}
19
Source : SearchKeyboardManager.cs
with MIT License
from chrislee0419
with MIT License
from chrislee0419
protected void InvokeTextKeyPressed(char c) => TextKeyPressed?.Invoke(c);
19
Source : DefaultOutputWriter.cs
with MIT License
from DynamicsValue
with MIT License
from DynamicsValue
private void AppendIndent()
{
for (int i = 0; i < this.currentIndent.Length; i++)
{
this.output.Invoke(this.currentIndent[i]);
}
}
19
Source : DefaultOutputWriter.cs
with MIT License
from DynamicsValue
with MIT License
from DynamicsValue
public override void Write(char c)
{
if (!c.Equals('\r') && !c.Equals('\n'))
{
this.Writer.writerState = new DefaultWriterState(this.Writer);
this.Writer.AppendIndent();
}
this.Writer.output.Invoke(c);
}
19
Source : DefaultOutputWriter.cs
with MIT License
from DynamicsValue
with MIT License
from DynamicsValue
public override void Write(char c)
{
if (c.Equals('\r') || c.Equals('\n'))
{
this.Writer.writerState = new IndentNextNonNewLineCharacterWriterState(this.Writer);
this.Writer.writerState.Write(c);
}
else
{
this.Writer.output.Invoke(c);
}
}
19
Source : JsonString.cs
with BSD 2-Clause "Simplified" License
from emilianavt
with BSD 2-Clause "Simplified" License
from emilianavt
public static int Unescape(string src, IStore w)
{
int writeCount = 0;
Action<Char> Write = c =>
{
if (w != null)
{
w.Write(c);
}
++writeCount;
};
int i = 0;
int length = src.Length - 1;
while (i < length)
{
if (src[i] == '\\')
{
var c = src[i + 1];
switch (c)
{
case '\\':
case '/':
case '"':
// remove prefix
Write(c);
i += 2;
continue;
case 'b':
Write('\b');
i += 2;
continue;
case 'f':
Write('\f');
i += 2;
continue;
case 'n':
Write('\n');
i += 2;
continue;
case 'r':
Write('\r');
i += 2;
continue;
case 't':
Write('\t');
i += 2;
continue;
}
}
Write(src[i]);
i += 1;
}
while (i <= length)
{
Write(src[i++]);
}
return writeCount;
}
19
Source : TextInput.cs
with MIT License
from EverestAPI
with MIT License
from EverestAPI
internal static void ReceiveTextInput(char c) {
// Invoke our own event handler.
OnInput?.Invoke(c);
}
19
Source : CharSerializer.cs
with GNU General Public License v3.0
from janfokke
with GNU General Public License v3.0
from janfokke
public override void Read(ExtendedBinaryReader reader, Action<char> synchronizationCallback)
{
synchronizationCallback(reader.ReadChar());
}
19
Source : Program.cs
with Apache License 2.0
from JetBrains
with Apache License 2.0
from JetBrains
private static void MainLifetime(string[] args, LifetimeDefinition lifetimeDefinition)
{
var lifetime = lifetimeDefinition.Lifetime;
var reflectionSerializers = new ReflectionSerializersFacade();
var serializers = new Serializers(TaskScheduler.Default, reflectionSerializers.Registrar);
var scheduler = SingleThreadScheduler.RunOnSeparateThread(lifetime, "Scheduler");
Protocol protocol;
SocketWire.Base wire;
var isServer = args.Length == 0 ? Util.Fork(args) : args[0] == "server";
if (isServer)
{
Console.replacedle = "Server";
wire = new SocketWire.Server(lifetime, scheduler, ourIpEndPoint);
protocol = new Protocol("Server", serializers, new Idenreplacedies(IdKind.Server), scheduler, wire, lifetime);
}
else
{
Console.replacedle = "Client";
wire = new SocketWire.Client(lifetime, scheduler, ourIpEndPoint);
protocol = new Protocol("Client", serializers, new Idenreplacedies(IdKind.Client), scheduler, wire, lifetime);
}
scheduler.Queue(() => RunApplication(isServer, reflectionSerializers, lifetime, protocol));
wire.Connected.Change.Advise(lifetime, value =>
{
if (value)
{
Console.replacedle += ": connected";
}
else
{
lifetimeDefinition.Terminate();
}
});
while (lifetime.IsAlive)
{
if (Console.KeyAvailable && OnChar != null)
scheduler.Queue(() => OnChar?.Invoke(Console.ReadKey(true).KeyChar));
Thread.Sleep(100);
}
}
19
Source : DefaultCryptographicImplementation.cs
with MIT License
from microsoft
with MIT License
from microsoft
private void GenerateCryptographicallyRandomCharacters(Action<char> characterOutputAction, int numChars)
{
// https://cmvandrevala.wordpress.com/2016/09/24/modulo-bias-when-generating-random-numbers/
var chars = CHARS_ALPHANUMERIC_ONLY;
byte[] data = new byte[4 * numChars];
using (RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider())
{
crypto.GetBytes(data);
}
for (int i = 0; i < numChars; i++)
{
int randomNumber = BitConverter.ToInt32(data, i * 4);
if (randomNumber < 0) randomNumber *= -1;
characterOutputAction(chars[randomNumber % chars.Length]);
}
}
19
Source : FifFile.cs
with MIT License
from nickworonekin
with MIT License
from nickworonekin
public void Save(string path)
{
using (var destination = new FileStream(path, FileMode.Create, FileAccess.Write))
using (var writer = new BinaryWriter(destination, Encoding.Unicode))
{
writer.Write(new byte[] { (byte)'F', (byte)'O', (byte)'N', (byte)'T', (byte)'D', (byte)'A', (byte)'T', (byte)'F' });
Action<char> WriteChar;
Action<short> WriteInt16;
Action<int> WriteInt32;
if (IsBigEndian)
{
WriteChar = value => writer.Write((char)BinaryPrimitives.ReverseEndianness(value));
WriteInt16 = value => writer.Write(BinaryPrimitives.ReverseEndianness(value));
WriteInt32 = value => writer.Write(BinaryPrimitives.ReverseEndianness(value));
writer.Write(1);
}
else
{
WriteChar = writer.Write;
WriteInt16 = writer.Write;
WriteInt32 = writer.Write;
writer.Write(0);
}
WriteInt16(101);
WriteInt16(56);
WriteInt32(Entries.Count);
WriteInt32(CharactersPerTexture);
WriteInt16(TextureCount);
WriteInt16(Width);
WriteInt16(Height);
WriteInt16(LastWidth);
WriteInt16(LastHeight);
WriteInt16(CharactersPerRow);
WriteInt16(RowCount);
WriteInt16(CharacterWidth);
WriteInt16(CharacterHeight);
WriteInt16(ColumnWidth);
WriteInt16(RowHeight);
WriteInt16(CharacterHeight);
writer.Write(288L); // Cheat and write this value out as a long
short index = 0;
foreach (var entry in Entries)
{
WriteInt32(entry.Value.Left);
WriteInt32(entry.Value.Right);
WriteInt32(entry.Value.Spacing);
WriteChar(entry.Key);
WriteInt16(index);
index++;
}
}
}
19
Source : CustomUIKeyboard.cs
with MIT License
from rolopogo
with MIT License
from rolopogo
public void Awake()
{
_keyButtonPrefab = Resources.FindObjectsOfTypeAll<TextMeshProButton>().First(x => x.name == "KeyboardButton");
string[] array = new string[]
{
"q",
"w",
"e",
"r",
"t",
"y",
"u",
"i",
"o",
"p",
"a",
"s",
"d",
"f",
"g",
"h",
"j",
"k",
"l",
"z",
"x",
"c",
"v",
"b",
"n",
"m",
"<-",
"space",
"OK",
"Cancel"
};
for (int i = 0; i < array.Length; i++)
{
RectTransform parent = transform.GetChild(i) as RectTransform;
//TextMeshProButton textMeshProButton = Instantiate(_keyButtonPrefab, parent);
TextMeshProButton textMeshProButton = parent.GetComponentInChildren<TextMeshProButton>();
textMeshProButton.text.text = array[i];
RectTransform rectTransform = textMeshProButton.transform as RectTransform;
rectTransform.localPosition = Vector2.zero;
rectTransform.localScale = Vector3.one;
rectTransform.ancreplaceddPosition = Vector2.zero;
rectTransform.anchorMin = Vector2.zero;
rectTransform.anchorMax = Vector3.one;
rectTransform.offsetMin = Vector2.zero;
rectTransform.offsetMax = Vector2.zero;
Navigation navigation = textMeshProButton.button.navigation;
navigation.mode = Navigation.Mode.None;
textMeshProButton.button.navigation = navigation;
textMeshProButton.button.onClick.RemoveAllListeners();
if (i < array.Length - 4)
{
string key = array[i];
textMeshProButton.button.onClick.AddListener(delegate ()
{
textKeyWasPressedEvent?.Invoke(key[0]);
});
}
else if (i == array.Length - 4)
{
textMeshProButton.button.onClick.AddListener(delegate ()
{
deleteButtonWasPressedEvent?.Invoke();
});
}
else if (i == array.Length - 1)
{
(textMeshProButton.transform as RectTransform).sizeDelta = new Vector2(7f, 1.5f);
_cancelButton = textMeshProButton.button;
_cancelButton.gameObject.SetActive(!HideCancelButton);
textMeshProButton.button.onClick.AddListener(delegate ()
{
cancelButtonWasPressedEvent?.Invoke();
});
}
else if (i == array.Length - 2)
{
_okButton = textMeshProButton.button;
_okButton.interactable = OkButtonInteractivity;
textMeshProButton.button.onClick.AddListener(delegate ()
{
okButtonWasPressedEvent?.Invoke();
});
}
else
{
textMeshProButton.button.onClick.AddListener(delegate ()
{
textKeyWasPressedEvent?.Invoke(' ');
});
}
}
name = "CustomUIKeyboard";
(transform as RectTransform).ancreplaceddPosition -= new Vector2(0f, 0f);
for (int i = 1; i <= 10; i++)
{
TextMeshProButton textButton = Instantiate(_keyButtonPrefab);
textButton.text.text = i.ToString().Last().ToString();
string key = i.ToString().Last().ToString();
textButton.button.onClick.AddListener(delegate ()
{
textKeyWasPressedEvent?.Invoke(key[0]);
});
RectTransform buttonRect = textButton.GetComponent<RectTransform>();
RectTransform component2 = transform.GetChild(i - 1).gameObject.GetComponent<RectTransform>();
RectTransform buttonHolder = Instantiate(component2, component2.parent, false);
Destroy(buttonHolder.GetComponentInChildren<Button>().gameObject);
buttonHolder.ancreplaceddPosition -= new Vector2(0f, -10.5f);
buttonRect.SetParent(buttonHolder, false);
buttonRect.localPosition = Vector2.zero;
buttonRect.localScale = Vector3.one;
buttonRect.ancreplaceddPosition = Vector2.zero;
buttonRect.anchorMin = Vector2.zero;
buttonRect.anchorMax = Vector3.one;
buttonRect.offsetMin = Vector2.zero;
buttonRect.offsetMax = Vector2.zero;
}
}
19
Source : KeyboardListenerService.cs
with GNU General Public License v3.0
from Sergio0694
with GNU General Public License v3.0
from Sergio0694
private void Content_CharacterReceived(UIElement sender, CharacterReceivedRoutedEventArgs args)
{
CharacterReceived?.Invoke(args.Character);
}
19
Source : InputModule.cs
with MIT License
from tortuga-foundation
with MIT License
from tortuga-foundation
private static unsafe void ProcessTextInputEvent(SDL_TextInputEvent ev)
{
uint byteCount = 0;
// Loop until the null terminator is found or the max size is reached.
while (byteCount < SDL_TextInputEvent.MaxTextSize && ev.text[byteCount++] != 0) { }
if (byteCount > 1)
{
// We don't want the null terminator.
byteCount -= 1;
int charCount = Encoding.UTF8.GetCharCount(ev.text, (int)byteCount);
char* charsPtr = stackalloc char[charCount];
Encoding.UTF8.GetChars(ev.text, (int)byteCount, charsPtr, charCount);
for (int i = 0; i < charCount; i++)
OnTextInput?.Invoke(charsPtr[i]);
}
}
19
Source : JsonString.cs
with MIT License
from vrm-c
with MIT License
from vrm-c
public static int Unescape(string src, IStore w)
{
int writeCount = 0;
Action<Char> Write = c =>
{
if (w != null)
{
w.Write(c);
}
++writeCount;
};
int i = 0;
int length = src.Length - 1;
while (i < length)
{
if (src[i] == '\\')
{
var c = src[i + 1];
switch (c)
{
case '\\':
case '/':
case '"':
// remove prefix
Write(c);
i += 2;
continue;
case 'b':
Write('\b');
i += 2;
continue;
case 'f':
Write('\f');
i += 2;
continue;
case 'n':
Write('\n');
i += 2;
continue;
case 'r':
Write('\r');
i += 2;
continue;
case 't':
Write('\t');
i += 2;
continue;
case 'u':
{
var u0 = CheckHex(src[i + 2]);
var u1 = CheckHex(src[i + 3]);
var u2 = CheckHex(src[i + 4]);
var u3 = CheckHex(src[i + 5]);
var u = (u0 << 12) + (u1 << 8) + (u2 << 4) + u3;
Write((char)u);
i += 6;
}
continue;
}
}
Write(src[i]);
i += 1;
}
while (i <= length)
{
Write(src[i++]);
}
return writeCount;
}
19
Source : Keyboard.cs
with Apache License 2.0
from wdlindmeier
with Apache License 2.0
from wdlindmeier
public override bool ProcessEventIntoState(InputEvent inputEvent, InputState intoState)
{
var keyEvent = inputEvent as KeyEvent;
if (keyEvent != null)
{
var control = intoState.controls[(int)keyEvent.key] as ButtonControl;
if (!control.enabled)
return false;
control.SetValueFromEvent(keyEvent.isDown ? 1 : 0);
return true;
}
var textEvent = inputEvent as TextEvent;
if (textEvent != null)
{
if (onCharacterReceived != null)
onCharacterReceived(textEvent.text);
return true;
}
return base.ProcessEventIntoState(inputEvent, intoState);
}
19
Source : ConsoleHelper.cs
with MIT License
from ZacharyPatten
with MIT License
from ZacharyPatten
internal static void HiddenReadLineBase(
char shownCharacter,
Func<int> GetLength,
Action<char> Append,
Action<int, char> InsertAt,
Action<int> RemoveAt,
Action<int, int>? RemoveRange = null,
Action? Clear = null)
{
int position = 0;
RemoveRange ??= (index, length) =>
{
for (int i = 0; i < length; i++)
{
RemoveAt(index);
}
};
Clear ??= () => RemoveRange(0, GetLength());
void MoveToOrigin() => MoveNegative(position);
void MoveToTail() => MovePositive(GetLength() - position);
while (true)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key is ConsoleKey.Enter)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
MovePositive(GetLength() - position);
Console.WriteLine();
break;
}
}
else if (keyInfo.Key is ConsoleKey.Backspace)
{
if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
{
MoveToOrigin();
ConsoleWriteString(new string(shownCharacter, GetLength() - position) + new string(' ', position));
MoveNegative(GetLength());
RemoveRange(0, position);
position = 0;
}
else if (position > 0)
{
if (position == GetLength())
{
MoveNegative(1);
ConsoleWriteChar(' ');
MoveNegative(1);
}
else
{
MoveToTail();
MoveNegative(1);
ConsoleWriteChar(' ');
MoveNegative(GetLength() - position + 1);
}
RemoveAt(position - 1);
position--;
}
}
else if (keyInfo.Key is ConsoleKey.Delete)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
if (position < GetLength())
{
int left = Console.CursorLeft;
int top = Console.CursorTop;
MoveToTail();
MoveNegative(1);
ConsoleWriteChar(' ');
Console.CursorLeft = left;
Console.CursorTop = top;
RemoveAt(position);
continue;
}
}
}
else if (keyInfo.Key is ConsoleKey.Escape)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
MoveToOrigin();
int left = Console.CursorLeft;
int top = Console.CursorTop;
ConsoleWriteString(new string(' ', GetLength()));
Console.CursorLeft = left;
Console.CursorTop = top;
Clear();
position = 0;
}
}
else if (keyInfo.Key is ConsoleKey.Home)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
{
MoveToOrigin();
ConsoleWriteString(new string(shownCharacter, GetLength() - position) + new string(' ', position));
MoveNegative(GetLength());
RemoveRange(0, position);
position = 0;
}
else
{
MoveToOrigin();
position = 0;
}
}
}
else if (keyInfo.Key is ConsoleKey.End)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
{
MoveToOrigin();
ConsoleWriteString(new string(shownCharacter, position) + new string(' ', GetLength() - position));
MoveNegative(GetLength() - position);
RemoveRange(position, GetLength() - position);
}
else
{
MoveToTail();
position = GetLength();
}
}
}
else if (keyInfo.Key is ConsoleKey.LeftArrow)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
{
MoveToOrigin();
position = 0;
}
else
{
if (position > 0)
{
MoveNegative(1);
position--;
}
}
}
}
else if (keyInfo.Key is ConsoleKey.RightArrow)
{
if (!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Shift) &&
!keyInfo.Modifiers.HasFlag(ConsoleModifiers.Alt))
{
if (keyInfo.Modifiers.HasFlag(ConsoleModifiers.Control))
{
MoveToTail();
position = GetLength();
}
else
{
if (position < GetLength())
{
MovePositive(1);
position++;
}
}
}
}
else
{
if (!(keyInfo.KeyChar is '\0'))
{
if (position == GetLength())
{
ConsoleWriteChar(shownCharacter);
Append(keyInfo.KeyChar);
position++;
}
else
{
int left = Console.CursorLeft;
int top = Console.CursorTop;
MoveToTail();
ConsoleWriteChar(shownCharacter);
Console.CursorLeft = left;
Console.CursorTop = top;
MovePositive(1);
InsertAt(position, keyInfo.KeyChar);
position++;
}
}
}
}
}