Используйте git rebase -i
и замените «pick» на второй и последующие фиксации «squash» или «fixup», как описано в в руководстве .
В этом примере ,
является либо хэшем SHA1, либо относительным местоположением из HEAD текущей ветви, из которого анализируются коммиты для команды rebase. Например, если пользователь хочет просмотреть 5 коммитов от текущего HEAD, команда git rebase -i HEAD~5
.
Просто некоторые изменения кода @ Fredrik, так как я тестировал оба его метода.
Первый - это только сокращенная версия
private void TextBox_Pasting(object sender, DataObjectPastingEventArgs e)
{
string clipboard = e.DataObject.GetData(typeof(string)) as string;
Regex nonNumeric = new System.Text.RegularExpressions.Regex (@"\D");
string result = nonNumeric.Replace(clipboard, string.Empty);
int caret = CaretIndex;
Text = Text.Substring(0, SelectionStart) + result +
Text.Substring(SelectionStart + SelectionLength);
CaretIndex = caret + result.Length;
e.CancelCommand();
}
, а другая один из них обновляется с сохранением содержимого буфера обмена
private string oldClipboardContent { get; set; } = "";
private bool pasteModified { get; set; } = false;
private void TextBox_Pasting(object sender, DataObjectPastingEventArgs e)
{
if (pasteModified)
{
pasteModified = false;
}
else
{
pasteModified = true;
string text = (string)e.DataObject.GetData(typeof(string));
oldClipboardContent = text;
Regex nonNumeric = new System.Text.RegularExpressions.Regex (@"\D");
text = nonNumeric.Replace(text, string.Empty);
e.CancelCommand();
Clipboard.SetData(DataFormats.Text, text);
ApplicationCommands.Paste.Execute(text, this);
Clipboard.SetData(DataFormats.Text, OldClipboardContent);
oldClipboardContent = "";
}
}
Я использовал те, что были внутри моего настраиваемого элемента управления TextBox
, поэтому я мог получить доступ к свойствам TextBox
, не записывая сначала имя.
Вы не можете вызвать args.DataObject.SetData («некоторые данные»), поскольку объект DataObject заморожен. Вы можете полностью заменить DataObject:
private void TextBoxPaste(object sender, DataObjectPastingEventArgs e) {
string text = (String)e.DataObject.GetData(typeof(String));
DataObject d = new DataObject();
d.SetData(DataFormats.Text, text.Replace(Environment.NewLine, " "));
e.DataObject = d;
}
Я использую VB.net совсем немного, я тестировал этот бит C #, я использовал конвертер, потому что я хромой:)
string oClipboard;
private void TextBox1_GotFocus(object sender, System.EventArgs e)
{
oClipboard = Clipboard.GetText();
Clipboard.SetText("foo");
}
private void TextBox1_LostFocus(object sender, System.EventArgs e)
{
Clipboard.SetText(oClipboard);
}
Я установил буфер обмена в новый текст, когда контроль получает фокус. Он сохраняет старое значение. Позже, когда управление теряет фокус, буфер обмена возвращается к старому значению.