У компонента RichTextBox
есть свойство ContextMenuStrip
, куда можно цеплять любое меню.
А как прицепить стандартное меню ПКМ, чтобы заново не изобретать велосипед?
Это как? Чем не подходит свойство?
как в блокноте
а что в него ставить-то, чтобы стандартное меню было?
Вот я и спрашиваю.
Это получается, что надо заново изобретать стандартное меню?
А, да, стандартного почему-то нет в RichTextBox
.
В TextBox
с Multiline
есть.
чем отличается от RichTextBox
?
RichTextBox
обычно берут когда нужно форматировать части текста, вставлять ссылки и т.п.
То есть, в самом ленивом языке мира, где укорачивают и так уже укороченное, предлагается городить такую эпопею?
private void menuCopyPaste_Opening(object sender, System.ComponentModel.CancelEventArgs e)
{
if (richTextBoxWebPage.TextLength > 0)
{
cutTextToolStripMenuItem.Enabled = true;
copyTextToolStripMenuItem.Enabled = true;
selectAllTextToolStripMenuItem.Enabled = true;
}
else
{
cutTextToolStripMenuItem.Enabled = false;
copyTextToolStripMenuItem.Enabled = false;
selectAllTextToolStripMenuItem.Enabled = false;
}
}
private void cutTextToolStripMenuItem_Click(object sender, EventArgs e)
{
string t = richTextBoxWebPage.SelectedText;
if (!string.IsNullOrEmpty(t))
{
richTextBoxWebPage.Cut();
}
}
private void copyTextToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBoxWebPage.Copy();
}
private void pasteTextToolStripMenuItem_Click(object sender, EventArgs e)
{
if (Clipboard.ContainsText())
richTextBoxWebPage.Paste();
}
private void selectAllTextToolStripMenuItem_Click(object sender, EventArgs e)
{
richTextBoxWebPage.SelectAll();
}
А как узнать, выделен ли весь текст или нет?
Причем тут язык, это библиотека.
И эта проблема вообще из WinAPI winapi richedit default context menu - Google zoeken
В винформс (в отличии от WPF и прочего современного) большинство контролов это обертки над винапи.
А зачем знать, что именно весь?
Но если надо, то наверно сравнить длину выделенного с длиной всего.
Ну так библиотека же по правилам языка писалась, где не принято писать лишнюю строчку кода. Это язык, в котором всё максимально упрощено (даже там, где не надо) и над всем есть обёртки. Почему бы тогда, до кучи, стандартное меню не докрутить? Я не понимаю эту логику
12 лет назад создавал RichEdit
на WinAPI. Не помню, чтобы там отсутствовало меню Зато помню, что со шрифтом были какие-то проблемы.
а как узнать, надо включить или отключить пункт “select all”?
Во многих меню это не делают )
Ну правильно. Потому что обёртки не дают для этого нормальный интерфейс, вот и не делают.
А зачем держать активными пункты “копировать” и “вырезать”, если ничего не выделено?
Да так много где, браузеры и т.п., винапи там не причем )
Я про WinAPI и не говорил. На WinAPI, вроде, тоже нет таких функций. Но WinForms легко мог бы их предоставить. На то он и обёртка. Тем более, от Microsoft. Они-то должны уметь работать с WinAPI.
Нет. Это вы от нехватки знаний такое городите. Можно обойтись одним обработчиком на все пункты.
А вообще странный у вас подход к разработке. Все время начинать с каких то наездов. В этом мире ничего не крутится только ради вашего блага. Берите обычный тексбокс и будет вам меню.
Многие вещи приходит переписывать под себя, никто же не знает что вам может понадобится через 20 лет.
ДА и в чем проблема мне лично вообще не понятно. по гуглу первая же строчка показывает готовый метод расширения.
Ну с таким уровнем лени лезть в программирование … странно даже.
Вообще сам ричбокс был сделан лет 200 назад и сюда пришел очень обрезанный и кустарный компонент тупо ради того чтобы он там был.
Подождите У вас какая-то странная навязчивая идея принимать все наезды лично на свой счёт, как буд-то это вы все эти обёртки и API разработали и не можете вынести критику, хотя лично вам никто ничего не предъявляет. Как будто всё крутится только вокруг вас.
Ну так а в чем проблема сразу сказать, что так можно, если вы это знали? Наверное, переизбыток знаний тоже может негативно сказываться на способности ими делиться
Ну блин, за 20-то лет такую простую вещь как СТАНДАРТНОЕ меню уже давно можно было легко завернуть во встроенный функционал, до кучи к горе всего остального Никто из разработчиков и представить не мог, что кому-то, внезапно, может понадобиться СТАНДАРТНОЕ меню?
Или вы пользуетесь логикой по типу “если мне это не надо, то и никому не надо и просто не должно быть надо”, как в линуксе?
Ну и зачем вообще? И что мешало сделать аналог? Может лень?
В чём это проявляется?
Чтоб RTF и прочий форматированный текст выводить )
Пользы куча, отсутствие меню — мелочь.
Так наоборот скорее винда и мак, на линуксе все пилят свои аналоги и форки всего ) Что создает другие проблемы, сложно выбрать и многие отваливаются еще на этапе выбора.
Да это вопрос о лени. За все время никогда не парился переписать логику менюшки. Там на 10 строк кода. А вот вашу тему почитал и решил погуглить. А там вагон и маленькая телега всяких компонентов на любой вкус. Что вам мешало гуглить перед распросами?
Ну вот я погуглил и скинул вам рабочий класс расширения. Пользуйтесь.
Это называется профдеформаця. Если сравнивать время когда информация и знания добывались курением оригинальных мануалов и пересказыванием чужих наработок и нынешнее время когда любая информация доступна по одному лишь клику мыши … нежелание некоторых пользоваться общедоступными информационными ресурсами немного выводит … все просят разжевать и в рот положить.
Так полно уже оберток. Гугл миллиард решений предлагает. Одно из них скинул выше.
На то время это был единственный рабочий вариант. Затем появились новые технологии и переделывать старые контролы стало нерационально. Ну или как то так.
Во внутренних свойствах. Почти нереально переопределить логику работы контрола в производных классах. Костыли возникают почти регулярно при малейшем изменении стандартной логики обработки.
Сейчас есть рабочие контролы для отображения форматированного текста. И может поэтому никто и не парится над расширением стандартного компонента. Все ползуют более навороченные элементы которые свободны и лишены недостатков.
Ну с этим согласен
Ну тогда не удивлятесь, что некоторые не хотят/не умеют искать нужную информацию
Но ведь у Борланда это как-то получилось (TMemo
называется) и до сих пор работает. Почему сами создатели WinAPI такой простой мелочи сделать не смогли?
У меня психоблок на использование сторонних компонентов. Особенно такой элементарной хрени, как поле для ввода текста. Ради этого тянуть сторонний компонент?
А что если разработчик просто забьёт на обновление и т.д. ?