- ベストアンサー
動的に変更した状態をそのまま保存したい
VisualBasic2008です。 csvファイルに「タイトル名」が100個あります。 フォームに100個のボタンがあり、起動時にcsvの「タイトル名」でボタンのtextを動的に変更しています。 この動的な変更をやめて、ボタンのtextを固定したいと思います。 ひとつずつ手動でtextを変更すればできるのですが、なかなか大変です。 そこで動的に変更した状態をそのまま保存し、コードを取り除くことができれば一番いいのですが・・・ そんなことできるでしょうか? もちろんコードの削除は手動で問題ありません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> たとえば、「現在の状態をコードとして表示する」なんてことでもいいんですが・・ > 現在のフォームの状態、どこかにないんですかねぇ。 それはコンパイラされたアセンブリの実行中の動作結果であって、開発上のソースにはどこにもありません。 > ご紹介いただいてる「変換.zip」というのはどういうものなんですか? Excelでの変換方法です。 単純に説明しづらいので、アップローダを利用してあげてます。
その他の回答 (4)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> textプロパティにひとつずつ手動で設定していけば、CSVやコードがなくても目的のフォームが完成しますよね。 > この状態を一発で作る方法があったら、教えていただきたいのです。 不可能です。 > あのーまったく単純にCSVをやめたいのです。シンプルにしたいのです。 外部に見える形でCSVファイルは利用しませんよ。 CSVの形式を持つ内部リソースを利用するだけです。 コードも流用せず、デザイナですべてリテラル文字として設定したいというのがお望みなら、そもそも元々の設計思想が異なるわけですからせこせこ直すしかありません。 Excel関数を利用して一部の文字列を置換した状態でDesigner.vbファイルの中身を生成し直すとか、 エディタ、正規表現、置換を駆使して頑張ってください。 Excelなら、以下の手順で比較的簡単にできそうですが。 ちょっとデバッグコードを書いてすべてのボタン名を取得してExcelに貼りつけておいて、 そのボタンごとに設定すべきテキストを指定。 Designer.vbファイルの中身を全部Excelへ張り付け、特定条件下のコードだった場合はText値を書き換え、みたいな。 http://fast-uploader.com/file/6968126068558/ ただその場合は、当然ですが、コードが破壊されていないことを確認することも必要です。
お礼
何度も投稿いただきありがとうございます。 やはりダメですか。 たとえば、「現在の状態をコードとして表示する」なんてことでもいいんですが・・ 現在のフォームの状態、どこかにないんですかねぇ。 なんかできそうな気がするんですが。
補足
ご紹介いただいてる「変換.zip」というのはどういうものなんですか?
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
追記です。 書き込んだ直後に気づいたんですが、 CSVファイル(タイトル部分だけでいい)を、そのままリソース管理させて、 CSVファイルを読み込んでいる部分をリソースを読み込むように変更すれば それだけで済むかもですね。 タイトルが複数行にまたがるようなら、もうちょっとコード修正が必要ですが。
お礼
あのーまったく単純にCSVをやめたいのです。シンプルにしたいのです。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> 目的とするものができあがってる訳ですから、何か一発でできませんかねぇ。 現在は『CSVファイル』からタイトルを設定しているわけですよね? 例えばですが、デザイナーでTextプロパティを編集し直すのではなく、 『コード』でタイトルを設定すればいいと思うんですが、それではダメですか? フォームのコンストラクタのInitializeComponent()走行後に処理させれば、 デザイナでは編集されていませんが、実行されるモノとしてはデザインされた ものになりますし、元々そういう作りですよね? Textプロパティのインポート元が異なるイメージでコードを修正してしまえば それで済む気がします。 タイトルなんて、List(Of String)とかで変数初期化時に全部突っ込んでおけば いいわけですから。 現行コードの流用がどのくらいできるかにもよりますが、KeyValuePair(Of String, String)() で、ボタン名とタイトルを紐づけた上で回すということもできるでしょうし、 コード上でタイトル名が邪魔だというならば、リソースファイルなどを利用して 設定すればいいでしょう。
お礼
ありがとうございます。 記載いただいたこと、理解できない部分もあります...VBの経験浅いもので... textプロパティにひとつずつ手動で設定していけば、CSVやコードがなくても目的のフォームが完成しますよね。 この状態を一発で作る方法があったら、教えていただきたいのです。
- neKo_deux
- ベストアンサー率44% (5541/12319)
> フォームに100個のボタンがあり、起動時にcsvの「タイトル名」でボタンのtextを動的に変更しています。 フォームはどうやって作ってるんでしょう?フォームエディタでボタンを100個配置? であれば、フォームの.frmファイルをテキストファイルとして開くと、処理方法の手がかりがあるかも ・上手い事ボタン名を逐次置換するとか ・Excelなんかに取り込んで文字列処理とか > ひとつずつ手動でtextを変更すればできるのですが、 ひとつ変更した状態で保存した.frmファイル ふたつ変更した状態で保存した.frmファイル なんか作って比較するとかも参考になるかも。
お礼
「Form1.Designer.vb」を直接編集しろということですね。 でもそのためのコードが必要になりますよね。 目的とするものができあがってる訳ですから、何か一発でできませんかねぇ。
お礼
わかりました。 しつこくて申し訳ありませんでした。 色々と記載いただき、何かと勉強になりました。 ありがとうございました。