DOBON.NETプログラミング道掲示板
(現在 過去ログ2 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■33635 / inTopicNo.1)  Form1内のForm2でのTextBox入力がうまくいかない
  
□投稿者/ C#beginner 一般人(1回)-(2017/06/13(Tue) 17:44:55)
  • アイコン環境/言語:[C#] 
    分類:[.NET] 

    C#初心者です。

    Visual Studio 2017で設定画面を作成しているのですが、次のような状況に悩んでます。
    ・Form1にpanel1を設置
    ・Form2にtextbox1を設置
    ・Form1ロードイベントで、panel1上にForm2を表示する

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace WindowsFormsApp11
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    public void Form1_Load(object sender, EventArgs e)
    {

    Form2 f2 = new Form2();
    f2.TopLevel = false;
    panel1.Controls.Add(f2);
    f2.Show();
    f2.BringToFront();

    }
    }
    }


    上記をデバック開始します。
    そしてForm2に設置されているtextbox1に適当に文字を入力します。すると文字の間にマウスカーソルを移動しようとして文字の間でクリックしても反応がなく、カーソルが移動しません(ただしキーボードの左右矢印キーでは移動します)。

    自分なりに検証したところ、トップレベルでないForm上ではこのような症状が出るのではと思っているのですが、よくわかりません。

    ちなみに設計上どうしてもフォームはパネル上に表示したいのでMDIは考えていません。


    お分かりになる方がいらっしゃいましたらご教授よろしくお願いします。
引用返信 削除キー/
■33636 / inTopicNo.2)  Re[1]: Form1内のForm2でのTextBox入力がうまくいかない
□投稿者/ 魔界の仮面弁士 大御所(1071回)-(2017/06/13(Tue) 19:31:35)
  • アイコンNo33635に返信(C#beginnerさんの記事)
    > 上記をデバック開始します。
    bug を除去する作業は デバッ「グ」ですね。

    TopLevel を false にする場合は、
     f2.FormBorderStyle = FormBorderStyle.None;
    にしておかないと、いろいろと問題が出るようです。


    > 文字の間でクリックしても反応がなく、カーソルが移動しません
    Form1 と Form2 に、それぞれ複数の TextBox を貼って、
    Tab キー等でフォーカス移動させた場合も問題があるようで…。
引用返信 削除キー/
■33637 / inTopicNo.3)  Re[2]: Form1内のForm2でのTextBox入力がうまくいかない
□投稿者/ C#beginner 一般人(1回)-(2017/06/15(Thu) 14:36:30)
  • アイコンNo33636に返信(魔界の仮面弁士さんの記事)

    返信ありがとうございます。


    デバッ「グ」ですね、ありがとうございます。

    > Form1 と Form2 に、それぞれ複数の TextBox を貼って、
    > Tab キー等でフォーカス移動させた場合も問題があるようで…。

    Form2に行ったきり戻ってこないですね…。

    > TopLevel を false にする場合は、
    >  f2.FormBorderStyle = FormBorderStyle.None;
    > にしておかないと、いろいろと問題が出るようです。

    なるほど、たしかにそのようにするよう記載されているサイトもありますね。そうすればマウスカーソルも問題なく移動してくれますね。
    ただどうしても見た目はフォームのままで作りたいのですが、やはりできないのでしょうか…。



引用返信 削除キー/
■33638 / inTopicNo.4)  Re[3]: Form1内のForm2でのTextBox入力がうまくいかない
□投稿者/ ハービー 一般人(1回)-(2017/06/16(Fri) 12:45:13)
  • アイコン> ただどうしても見た目はフォームのままで作りたいのですが、やはりできないのでしょうか…。

    そのようにしたい理由は何でしょうか?
    また、Form1のパネルにForm2を表示された時のイメージを見せてもらえるとありがたいです。
引用返信 削除キー/
■33639 / inTopicNo.5)  Re[4]: Form1内のForm2でのTextBox入力がうまくいかない
□投稿者/ C#beginner 一般人(2回)-(2017/06/16(Fri) 20:12:56)
  • アイコンNo33638に返信(ハービーさんの記事)

    返信ありがとうございます。


    > そのようにしたい理由は何でしょうか?
    > また、Form1のパネルにForm2を表示された時のイメージを見せてもらえるとありがたいです。

    実は質問内容はできるだけ簡素化させてもらったんですが、実際はイメージのような設定画面を作りたいんです。

    ---
    画面左のツリービューをクリックするとそれに応じたフォーム画面をその時に選択しているTabControlPage上のPanelに表示。
    ツリービューの項目は100個ほどの予定で、各フォームのBOXの内容は「開始時間」や「終了時間」など。適用ボタンを押すとファイルに書き込み、それを元に機器を制御する。
    ---

    分かりづらいかもしれませんが、上記のような理由で、できればフォームはそのままの形にしたいです。
イメージ
1497611576.zip
/15KB
引用返信 削除キー/
■33642 / inTopicNo.6)  Re[5]: Form1内のForm2でのTextBox入力がうまくいかない
□投稿者/ 魔界の仮面弁士 大御所(1072回)-(2017/06/19(Mon) 23:52:15)
  • アイコンNo33639に返信(C#beginnerさんの記事)
    > 実際はイメージのような設定画面を作りたいんです。

    普通なら、複数のフォームがあればそのうちの一つがアクティブとなり
    タイトルバーの色も変化しますが、子フォームとして
    配置されたフォーム群はそれが適いませんね。

    UserControl では駄目なのでしょうか。


    > できればフォームはそのままの形にしたいです。

    ひとまず、TextBox を RichTextBox に置き換えてみるとか。
引用返信 削除キー/
■33648 / inTopicNo.7)  Re[6]: Form1内のForm2でのTextBox入力がうまくいかない
□投稿者/ C#beginner 一般人(3回)-(2017/06/22(Thu) 09:19:28)
  • アイコンNo33642に返信(魔界の仮面弁士さんの記事)

    > 普通なら、複数のフォームがあればそのうちの一つがアクティブとなり
    > タイトルバーの色も変化しますが、子フォームとして
    > 配置されたフォーム群はそれが適いませんね。

    そうなんですよね。フォームが生き生きしてないですねw

    > UserControl では駄目なのでしょうか。

    そちらも検討してみたんですが見た目上やはりフォームが望ましかったので、最終的に、TabControlPageをTabだけ見える状態まで縮小して、MDIで対応することにしました。がんばります。

    何度もご回答ありがとうございました!
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -