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

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

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

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

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

14648閲覧

ユーザーコントロールのAnchorを設定するとユーザーコントロールが崩れる

sanpin

総合スコア11

C#

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

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

0グッド

1クリップ

投稿2015/10/07 01:22

お世話になります。

現在VisualStudio2013+C#でユーザーコントロールを作成しています。

該当のユーザコントロールですが、
左にテキストボックス、右にボタンを貼り付けています。
また、左のテキストボックスのAnchorをTop, Left, Right、
右のボタンのAnchorをRightに設定しており、
使用するフォーム上でユーザコントロールのサイズを変更した際に、
中のテキストボックスの幅とボタンの位置が調整されるようにしています。

上記コントロールなのですが、
デザイナー上で、ツールボックスからドラッグ&ドロップで作成した際には問題ないのですが、
1個目のコントロールをコピー→貼り付け→サイズ変更、
上記で作成した2個目のコントロールをコピー→貼り付け→サイズ変更、
・・・
としていくと、
コントロール内のボタンが2つになったり、
テキストボックスの幅が正しく調整されなくなってしまいました。

ユーザーコントロールでAnchorプロパティを設定した際に、
コピーペーストでも問題ないようにするにはどのようにすれば良いのでしょうか。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。

WinFormsで良いですよね?
試してみたのですが、再現しませんでした。
手順に間違いが無いか再度ご確認ください。

間違いが無い場合、.NET Frameworkのバージョン・開発環境のオペレーティングシステム/バージョンなど、より詳細な情報の追加をお願いします。

投稿2015/10/07 01:49

Tak1wa

総合スコア4791

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

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

sanpin

2015/10/07 02:28

ご回答有り難うございます。 すみません、情報が抜けていました。WindowsFormです。 .NetFrameworkは4.6で、OSはWin7Pro SP1となります。 こちらでもいろいろ試したところ、標準のボタン等では発生せず、 ボタンを継承して作成したボタンを使用した場合にのみ発生するようでした。 プロジェクトを右クリック→追加→コンポーネント で作成し、継承元をComponentからButtonに変更したものとなります。 ```C# #TestButton public partial class TestButton : System.Windows.Forms.Button { public TestButton() { InitializeComponent(); } public TestButton(IContainer container) { container.Add(this); InitializeComponent(); } } #TestButton.Designer.cs partial class TestButton { /// <summary> /// 必要なデザイナー変数です。 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> /// <param name="disposing">マネージ リソースが破棄される場合 true、破棄されない場合は false です。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region コンポーネント デザイナーで生成されたコード /// <summary> /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// </summary> private void InitializeComponent() { components = new System.ComponentModel.Container(); } #endregion } ``` お手数おかけしますが、よろしくお願い致します。
Tak1wa

2015/10/07 02:51

取り急ぎ再現しました。 コピペで発生するこの「object_xxxx_xxx...」、以前見たことがあります。 なんだったかな…。少し調べてみます。
Tak1wa

2015/10/07 03:31

おそらくですが、TestButtonコンストラクタのcontainer.Add(this);が悪さをしている気がします。UserControl自身をコンテナと見立てて余計にAddしてしまっているのかなぁ…。 対処法ですが、container.Addをコメントアウト、またはButtonなのでComponentではなくCustomControlとして実装しては如何でしょう。 container.Addをコメントアウトすることによる副作用についてはまだ不明瞭です。
sanpin

2015/10/07 04:14

ありがとうございます。 ComponentではなくCustomControlとして実装したところ正常に動作しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問