prepared two types. Press F2 or F3 to see it working.
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class Father : Form
{
public Father() {
InitializeComponent();
}
protected override void OnShown(EventArgs e) {
base.OnShown(e);
TransparencyKey = Color.Magenta;
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (keyData == (Keys.F2)) {
BeginInvoke((Action)ShowDateForm1);
return true;
}
if (keyData == (Keys.F3)) {
BeginInvoke((Action)ShowDateForm2);
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
private void ShowDateForm1() {
Opacity = 0.5d;
using (var dateForm = new DateForm()) {
dateForm.ShowDialog();
}
Opacity = 1.0d;
}
Color panelBackColor;
Color formBackColor;
private void ShowDateForm2() {
// save BacColor
formBackColor = BackColor;
panelBackColor = FatherPanel.BackColor;
// make transparent
BackColor = TransparencyKey;
FatherPanel.BackColor = TransparencyKey;
FatherPanel.Enabled = false;
// Open DateForm
var dateForm = new DateForm();
dateForm.FormClosed += DateForm_FormClosed;
dateForm.Show();
}
private void DateForm_FormClosed(object sender,
FormClosedEventArgs e) {
// restore BacColor
BackColor = formBackColor;
FatherPanel.BackColor = panelBackColor;
FatherPanel.Enabled = true;
// activate
Activate();
}
}