3

これは悲しい問題です...
私はそこに次のような多くのチェックを追加しました:

System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Profiles");

交換された:

#if DEMO
   System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Lines");
#else
   System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Profiles");
#endif

しかし、フォームイベントの1つにイベントハンドラーを追加すると、すべてのチェックがなくなりました-_-
それらを保持しながら、デザイナーを介してフォームを変更できるようにするにはどうすればよいですか?

VC#Express2010を使用しています

4

3 に答える 3

4

.designer.csファイルのポイントは、デザイナーに変更を加えるたびに再生成されることです。

これまで見てきたように、生成されたファイルは編集しないでください。ファイルが再生成され、行った変更が失われるからです。

クラス コンストラクターでこれらの変更を行います。

于 2012-10-04T12:11:09.337 に答える
2

デザイナーでコードを変更しています。プレビューを生成できるようにするために、自動生成されたセクションで循環的複雑度が 1 を超えるコードを記述することは禁止されています。これは、if、ループ、またはメソッドの呼び出しがないことを意味します。

代わりに、InitializeComponents()! の後で、これらの変更を別の場所で行う必要があります。配列に制御要素を入力する場合 (後で簡単にアクセスできるようにするため)、通常は別のメソッド InitializeDynamic() を作成します。

注: デザイナー セクションでコードを変更できますが、デザインに直接適用できるコードのみを変更できます (したがって、デザイナー自体で変更することもできます)。

于 2012-10-04T12:16:05.510 に答える
1

いいえ、Desinger ファイルは VS デザイナー用であり、自由に再生成されます...

クラスコンストラクターにコードを追加することで、目的を達成できます。

    public Form1()
    {
        InitializeComponent();
        #if DEMO
           var changeNodes = treeView1.Nodes.Find("Profiles", true);
           if (changeNodes.Length>0)
           {
               foreach(TreeNode node in changeNodes)
               {
                    node.Name = "Lines";
                    node.Text = "Lines text";
                    // add/set whatever else you need in demo mode
               }
           }
           // or remove all nodes and add new ones
        #endif 
    }
于 2012-10-04T12:12:57.020 に答える