質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

Q&A

解決済

1回答

1538閲覧

C# Panel内のPictureBoxの検索

Yoshikun_0945

総合スコア224

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

0グッド

0クリップ

投稿2016/12/19 00:44

編集2016/12/19 00:46

#現在作成中のプログラム
C#のFormを使用しています。
Panelの中にPictureBox1~3があり、timerの繰り返し処理でPictureBox1~3のLeft値が可変します。

###実現したいこと(Timer処理)
①Panelの横座標だけ異なる、座標a~座標b内にTop,LeftがあるPictureBoxのIDを検索する。
②検索した結果、見つかったPictureBoxのIDを変数aに格納する。
③以下のようにif文やLeft値の変更でaに格納したIDが使用できるようにする。

if(a.Left + a.Width + 10 < Panel1.Width) {//aのLeft + 幅 + 10がPanel1の幅を超えないか? a.Left = a.Left + 10; aのLeft値を + 10する } //現在は10足すことになっていますが、足す値はaとは別のInteger型の変数に格納した値を足す予定です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2016/12/19 00:50

①の条件を満たす(その条件もどういうことかイマイチ理解していないがともかく、)ものが複数あった場合はどうするんですか?
Yoshikun_0945

2016/12/20 09:04

TopやLeftなど特定の位置にいるもののみ名前を取得したいです。
guest

回答1

0

ベストアンサー

Panel がわかっているならば、form1.panel1 である場合なら、

Csharp

1use System.Text.RegularExpressions; 2 3Regex regex = new Regex("(PictureBox[1-3])"); 4foreach(Control control in form1.panel1.Controls) { 5 Match match = regex.Matches(control.Name); 6 if(match.Success) { 7 PictureBox target = control as PictureBox; 8 //target は PictureBox1~3 のいずれかなので、必要な処理を行う 9 .... 10 } 11}

でPictureBoxを特定することができていますから、あとはどうにでもなるでしょう

投稿2016/12/19 00:59

編集2016/12/20 08:54
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshikun_0945

2016/12/20 08:37

このコードを実行したら、エラーが出ました。 作成できないコードのようです。
Yoshikun_0945

2016/12/20 09:02

複数ヒットしましたが、TOPが特定の数値のPictureBoxだけを動作させる方法が知りたいです。
tacsheaven

2016/12/20 09:03

あのソースですでに target は「PictureBox1~3のどれか」である状態ですから、 if (target.Top == [特定の数値]) { // 処理をする } となるだけですよ?
Yoshikun_0945

2016/12/20 09:08

大変参考になりました。 コードがエラーなく実行できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問