- PR -

ユーザーコントロールの画面配置時の移動

1
投稿者投稿内容
kenken
会議室デビュー日: 2003/09/19
投稿数: 9
投稿日時: 2003-12-02 16:44
ユーザーコントロールを作成し、
画面に貼り付けると左上から動きません。

他のサーバーコントロールは好きに動かせます。

なぜでしょうか?
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-12-02 18:01
kenkenさん、こんばんは。

引用:

ユーザーコントロールを作成し、
画面に貼り付けると左上から動きません。

他のサーバーコントロールは好きに動かせます。

なぜでしょうか?


えーと、これだけの情報ですと、「そういう風に作ってないから」としか答えようがありません(ちょっと意地悪&エラソーですけど)。
取り敢えず、Webサーバー コントロールの話なのかWindowsフォーム コントロールの話なのか、使用言語とか開発環境とか、現象を再現させる必要最低限のコードとか、そういった情報を記載すれば、きっと誰かしらフォローしてくれると思いますよ。

kenken
会議室デビュー日: 2003/09/19
投稿数: 9
投稿日時: 2003-12-02 18:08
きくちゃんさん返信ありがとうございます。

引用:

取り敢えず、Webサーバー コントロールの話なのかWindowsフォーム コントロールの話なのか、使用言語とか開発環境とか、現象を再現させる必要最低限のコードとか、そういった情報を記載すれば、きっと誰かしらフォローしてくれると思いますよ。



何も書いてなくて失礼致しました。

・Webフォームで作成しています。
作成手順
1)ユーザーコントロールにドロップダウンリストボックスを追加(配置)する
(UC_DDLB.ascxとします)
2)WebForm.aspxにUC_DDLB.ascxを追加(配置)します
3)配置したUC_DDLB.ascxは画面の左上から移動できない

このような状況です。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-12-02 19:04
kenkenさん、こんばんは。

取り敢えず、WebForm.aspx をHTMLビューに切り替えて、配置したユーザーコントロールを表すタグ内に、style="POSITION: absolute" と入力してデザインビューに切り替えてみて下さい。マウスで好きな場所にドラッグ出来るはずです。

但し、このままだと実行時に期待する場所にレイアウトされないと思います。
ユーザーコントロール内に子コントロールを配置する際には、フローレイアウトでtableとかpanelとかを用いてレイアウトを調整し、ユーザーコントロールのLoadイベント等で

コード:
' この例では子コントロールのレイアウトに<TABLE id="Table1" runat="server">を用いている
Me.Table1.Attributes.Add("style", Me.Attributes("style"))



を記述すれば、実行時に、デザインビューで指定したレイアウト情報が反映されるはずです。
kenken
会議室デビュー日: 2003/09/19
投稿数: 9
投稿日時: 2003-12-02 19:57
引用:

取り敢えず、WebForm.aspx をHTMLビューに切り替えて、配置したユーザーコントロールを表すタグ内に、style="POSITION: absolute" と入力してデザインビューに切り替えてみて下さい。マウスで好きな場所にドラッグ出来るはずです。

但し、このままだと実行時に期待する場所にレイアウトされないと思います。
ユーザーコントロール内に子コントロールを配置する際には、フローレイアウトでtableとかpanelとかを用いてレイアウトを調整し、ユーザーコントロールのLoadイベント等で

コード:
' この例では子コントロールのレイアウトに<TABLE id="Table1" runat="server">を用いている
Me.Table1.Attributes.Add("style", Me.Attributes("style"))



を記述すれば、実行時に、デザインビューで指定したレイアウト情報が反映されるはずです。



きくちゃんさんありがとうございます。
早速やってみました。
出来ました!!
ありがとうございました。

しかし、こんなにしないと出来ないなんて・・・・
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2003-12-02 21:34
[ツールボックス]-[HTML]の「Grid Layout Panel」を使えば、コントロールを好きに動かせるようになります。

# 以下、余談。。。

ただ、この方法にしろきくちゃんさんご提示の方法にしろ、なぜ好きに動かせるようになるのかは、じっくりと理解しておいたほうがよいと思います。
(そのためには、HTMLやCSSの知識が必須です。)
この掲示板を『Grid Layout(すべてが含まれる投稿を検索)』で検索してみるのもよいかもしれません。
Grid Layout PanelがWebフォームに分類されていない理由について考えてみるのもよいかもしれません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-03 08:48
引用:

kenkenさんの書き込み (2003-12-02 19:57) より:

しかし、こんなにしないと出来ないなんて・・・・


 だって、そんな風にしないとできないように作っているんだもん(笑)

 失礼。kenkenさんにとっては驚きかもしれませんが、Webの本来の技術を考えると、至極まっとうです。Webは元々、「テキストベースで動く」ところから始まっていますから、本来は「表示場所を示す」なんてことはできないのです。また、複合コントロールになりますから、「全体」として場所を示すのか、それとも「個々」の場所を示すのか、わかりませんしね。逆に言うと、そういうことを示すことができるような柔軟性がある、わけです。

 スタイルの追加は、ascxにプロパティとそれを処理するコードを追加してやれば、「そんな風」にしなくてもいいですよ。具体的には、locationプロパティの追加と、ベースとなるページのPageLayoutプロパティによってabsoluteにするかどうかを判断し、スタイルを追加する。←そういう「作り込み」が「そんな風」?

###以下余談
 歴史的背景や技術的背景を知らなくても「プログラミング」できることがマイクロソフト社の開発製品の強みですが、しかし、ねぇ。。。
と、偉そうなことを言えたもんでもないが。。。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2003-12-03 18:09
Jittaさん、こんばんは。
引用:

 歴史的背景や技術的背景を知らなくても「プログラミング」できることがマイクロソフト社の開発製品の強みですが、しかし、ねぇ。。。



今のところ、その辺がまだ中途半端というか、「ほどほど」だったりするんで、こうやって「何故でしょう?」「どうすれば出来るでしょう?」という疑問が出てきて、裏側で何が行われているのかを理解するチャンスに繋がっているのかも知れません。
まあ、探求心とか好奇心とかの強さにもよりますけど。
1

スキルアップ/キャリアアップ(JOB@IT)