Я знаю, что этот ответ очень поздний, но я надеюсь, что это поможет другим, кто хотел бы, чтобы это было сделано легко.
Сначала создайте новый пользовательский элемент управления в своем проекте и укажите ему имя, скажем CustomRTB.cs. После этого откройте частичный класс и изменения:
public partial class CustomRTB : UserControl
к:
public partial class CustomRTB : RichTextBox
Это вызовет ошибку при открытии файла Design так просто перейти к файлу designer.cs и удалить/комментарий линии, которые показывают ошибки (там будет не более двух строк с ошибками). Затем добавьте следующее к частичному классу:
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}
Класс должен выглядеть, как это сейчас:
public partial class CustomRTB : RichTextBox
{
public CustomRTB()
{
InitializeComponent();
}
protected override CreateParams CreateParams
{
get
{
//This makes the control's background transparent
CreateParams CP = base.CreateParams;
CP.ExStyle |= 0x20;
return CP;
}
}
}
Теперь создать решение, и вы будете иметь возможность использовать контроль в своих формах. Этот элемент управления будет полностью прозрачным, и вы не сможете настроить прозрачность. Вы также сможете создавать различные прозрачные элементы управления помимо richtextbox, изменяя первую строку в этом коде. Надеюсь, что это помогает :)
Edit:
Проблема с выше контроля является то, что она может быть использована только для отображения текста программно, как это проблематично изменить во время работы или отладки приложения (как @nevelis объясняется в комментарии ниже). Однако есть простой способ:
Сначала создайте в своем проекте другой элемент управления пользователя и назовите его TranslucentPanel.cs (Да, это панель, и она будет полупрозрачной, непрозрачность которой может управляться программно) , Теперь откройте частичный класс и изменить его, как:
public partial class TranslucentPanel : Panel
{
public TranslucentPanel()
{
InitializeComponent();
SetStyle(ControlStyles.SupportsTransparentBackColor |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.ResizeRedraw |
ControlStyles.UserPaint, true);
BackColor = Color.Transparent;
}
}
Вы должны позаботиться о том, что ошибка выплывает при создании проекта, просто закомментировать строку в файле designer.cs, который бросает его.После этого снова создайте проект, и прозрачная панель появится в панели инструментов, как и раньше. Используйте эту панель в качестве родительского элемента управления для прозрачного richtextbox, то есть поместите панель в свою форму и поместите RTB внутри нее. Вы также можете установить свойство BorderStyle как None, чтобы удалить следы RTB из пользовательского интерфейса.
Вы также можете контролировать прозрачность полупрозрачной панели, используя его свойство BackColor в программе:
translucentPanel1.BackColor = Color.FromArgb(50, 0, 0, 0);
Изменение аргументов, переданных выше позволит вам контролировать прозрачность и цвет панели.
Это обходное решение решит проблемы с курсором и прокруткой не только прозрачного RTB, но и любого другого прозрачного элемента управления, который вы создаете.
Вам придется самому закодировать его (или найти того, кто уже это сделал), ничего не сделано для этого афаика. – ChristopheD
Взгляните на эту возможную дублируемую запись - http://stackoverflow.com/questions/1716427/making-a-textbox-transparent – eandersson
Что вы подразумеваете под кодом? Как так?? –