Automatic regenerate designer files

前端 未结 3 1271
轮回少年
轮回少年 2021-02-07 13:57

Recently I\'ve been making some improvements to a lot of the controls we use, for example give properties default values and making buttons private instead of protected. By maki

相关标签:
3条回答
  • 2021-02-07 14:11

    Employ form's inheritance instead of maintaining changes over 300 controls.

    0 讨论(0)
  • 2021-02-07 14:13

    The only way I found to do what you want, is to open the form designer, add a control, then save. This will regenerate the designer code. Next delete the newly added control, save again, and close.

    I usually add a button by double-clicking on the button in the toolbox. This puts the button at location 0,0.

    I did this a couple months ago with a project with about 100 form and user-controls. Instead of a macro that recursed over the project files, I recorded a temporary macro then ran the macro for each form/user-control and inspected the results.

    Do not confuse refactoring with reformatting. I often optimize and/or modify the designer code in large forms. For example, I will change the order controls are added to panels, and how panels are added to other panels. I would not blindly regenerate the designer code.

    0 讨论(0)
  • 2021-02-07 14:24

    I also ran into this problem (see also: Force WinForms to regenerate .designer.cs files).

    In the end, most of the properties I removed were uniquely named, and I was able to write a shell script to remove lines from the designer files that contained the property names.

    Note, this actually removes the line, not just leaving a blank line.
    It needs to be run from a Bash Shell, if you have msysgit installed, that shell is fine.
    In this one, TextForeColor was the property being removed.

    #!/bin/bash
    files=$(find . -type f -name '*.Designer.cs' -print0 | xargs -0 grep -l 'TextForeColor')
    for file in $files
    do
        echo $file
        sed '/TextForeColor/ d' $file >$file.tmp
        mv $file.tmp $file
    done
    
    0 讨论(0)
提交回复
热议问题