■81998 / inTopicNo.1) |
透過ウインドウのサイズ変更後の振る舞い |
□投稿者/ qbf2 (1回)-(2016/11/28(Mon) 14:06:09)
|
分類:[.NET 全般]
某知恵袋に投げた質問ですが、どうも埒があかないようなので、ちょっとマルチポストっぽいですけどお願いします。
フォームの透明色にBackcolorを設定して、後ろが覗ける「窓」みたいなフォームを作りました。「窓枠」のなかの画像を処理(OCR)にかけてごにょごにょ、したかったのです。ところが、このフォームをいじっていると時々触れなくなる(フォームの透明でない部分もマウスイベントを受け取ってない感じ)ことがあって、いろいろやってみると、 ・フォームのタイトルバーをダブルクリックして最大化 ・最大化したタイトルバーをダブルクリックして元のサイズに戻す と、フォームのタイトルバーやフレームをクリックしてもそのフォームが選択出来なくなっていることがわかりました。 私の手元では4台のPC(win7,8.1,8.1,10 全て64bit版)で、以下のC#のソースをcscでコンパイルしたもので同様の症状が再現出来ました。.NetFrameworkも2.0から4.6までやってみましたけど同様。(実際のターゲットはWin8.1, .Net4.6です) 私のてもとでは100%でしたが、某所の回答で試していただいた方はその症状がでなかったそうです。resizeのイベントを受けて透明色を一時的に変更、タイマーで戻すとかもやってみましたが、元のサイズに戻したあと透明で無い間はいじれましたけれど透明にした途端同様の現象に陥りました。なにか「正しいやり方」があったりするのか、対策などご存知の方いらっしゃいませんでしょうか。
//https://msdn.microsoft.com/ja-jp/library/ms229597(v=vs.110).aspx を参考に。 using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms;
public class Form1 : Form{ public Form1() { this.TransparencyKey=this.BackColor; }
[STAThread] public static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
|
|