Если я правильно понимаю, добавив:
width:fit-content;
следует вычеркнуть слово
Недавно я задал тот же вопрос и получил хороший ответ: Новый элемент изображения создан, но не присоединен к DOM. Его высота и ширина являются исходными размерами изображения.
Изменить : Я отредактировал ответ на свой вопрос, как и было обещано в комментариях. Определение размера изображения теперь связано с событием onload
изображения, чтобы гарантировать достоверность результатов.
Раскрываемый список - это StateListDrawable
- он содержит ссылку на несколько раскрываемых списков для каждого состояния, в котором список может быть, например, выделен, сфокусирован, нажат, отключен...
Хотя вы можете извлечь файл с помощью getSelector ()
, я не думаю, что вы можете извлечь определенный Drawable
из StateListDrawable
, а также не кажется возможным программно извлечь цвет непосредственно из ColorDrawable
.
Для установки цвета необходим StateListDrawable
, как описано выше. Этот параметр можно задать в списке с помощью атрибута android: listSelector
, определив в XML файл, например:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_focused="true"
android:drawable="@drawable/item_disabled" />
<item android:state_pressed="true"
android:drawable="@drawable/item_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/item_focused" />
</selector>
-121--867839- Предположим, что WinForms: попробуйте следующее: определите RichTextBox с обработчиком событий KeyDown, например:
Только добавление пример:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
richTextBox1.Text += (string)Clipboard.GetData("Text");
e.Handled = true;
}
}
[Edit]
Добавление RTF буфера обмена в RichTextBox в текущей точке вставки (начало выбора), пример:
private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
// suspend layout to avoid blinking
richTextBox2.SuspendLayout();
// get insertion point
int insPt = richTextBox2.SelectionStart;
// preserve text from after insertion pont to end of RTF content
string postRTFContent = richTextBox2.Text.Substring(insPt);
// remove the content after the insertion point
richTextBox2.Text = richTextBox2.Text.Substring(0, insPt);
// add the clipboard content and then the preserved postRTF content
richTextBox2.Text += (string)Clipboard.GetData("Text") + postRTFContent;
// adjust the insertion point to just after the inserted text
richTextBox2.SelectionStart = richTextBox2.TextLength - postRTFContent.Length;
// restore layout
richTextBox2.ResumeLayout();
// cancel the paste
e.Handled = true;
}
}
[End Edit]
Примечание 0: Вставленный в текст предполагает текущие настройки стиля, действующие для RichTextBox: если для параметра "ForeGround color набора задано значение" Blue ", вставленный в текст будет иметь синий цвет.
Примечание 1: Это то, что я быстро стучал вместе и проверял всего несколько раз, создавая несколько разноцветных и странных форматированных RTF для буфера обмена с помощью WordPad: затем вставляясь в RichTextBox1 во время выполнения: он действительно отделял весь цвет, отступы и т.д.
Так как он не полностью протестирован, использовать
Примечание 2: Это не будет обрабатывать случай 'Вставить или' Вставить через контекстное меню, очевидно.
Приветствуйте все критические замечания к этому ответу и немедленно снимите его, если он не «на марке».
Существует очень простой способ сделать это, которое работает хорошо на меня:
private bool updatingText;
public MyForm() {
InitializeComponent();
inputTextBox.TextChanged += inputTextBox_TextChanged;
}
private void inputTextBox_TextChanged(object sender, EventArgs e)
{
if (updatingText)
{
return;
}
updatingText = true;
try
{
var i = inputTextBox.SelectionStart;
var text = inputTextBox.Text;
inputTextBox.Rtf = "";
inputTextBox.Text = text;
inputTextBox.SelectionStart = i;
}
catch (Exception){}
updatingText = false;
}
Начиная с Text
свойство по сути, не форматируя сброс текста RTF, затем устанавливающего текстовое свойство на необработанный вход, удаляет любой из специальных объектов, которые, возможно, были вставлены в.
Добавьте обработчик в клавишу
-Vent, чтобы перехватить стандартную пасту и вручную вставлять только простой текст:
private void rtb_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.V)
{
((RichTextBox)sender).Paste(DataFormats.GetFormat("Text"));
e.Handled = true;
}
}