none
发现了VS2008 Window窗体设计器的一个奇怪问题,急求解决方案!!! RRS feed

  • 问题

  •       本人最近在使用VS2008开发一个WinForm项目时,发现了VS2008 Window窗体设计器的一个奇怪问题,下面就叙述下问题发现的经过。
          首先,在一个新建窗体上粘贴了一个来自另一个解决方案里的DataGridView控件的拷贝,然后在“属性”视图修改相关样式属性和将Name属性设置为“grid_SumInfo”,最后在后台给这个控件编写加载数据代码。待所有代码编完后,启动运行时报出了“当前上下文中不存在名称grid_SumInfo”错误。
          于是,我打开对应的Desginer.cs文件查看,结果意外地发现声明此DataGridView控件的代码竟然在InitializeComponent()方法里,这样以来后台的代码当然就访问不到了,于是我就将这端代码移到了InitializeComponent()方法外(也就是作为窗体类的属性成员),再重新编译后终于可以运行了。
           可是,问题还并没有就此结束,当我再次通过Window窗体设计器调整DataGridView控件属性时,就又会报同样的错误,再次打开对应的Desginer.cs文件查看,发现里面的代码又被Window窗体设计器重新生成了一遍,刚才移动的那段代码又回到InitializeComponent()方法里了。我再反复折腾了几遍,问题依旧。
           这下就郁闷了,难道我每次可视化方式调整了DataGridView控件的属性后,都要移动下那段代码再生成才能正常?这样话,那就太费劲了!难道这是VS2008窗体设计器自身的一个BUG?有什么方法可以避免或解决呢?

    以经验为武器,以技术为后盾

    2012年8月20日 3:55

答案

  • 你好,

    我按照你的描述尝试如下:

    1. 在另一个解决方案中拷贝 DataGridView :dataGridViewOriginal
    2. 将拷贝的DataGridView 放到新的解决方案的Form1中,并更改几处属性,如DataGridview的名称(dataGridViewCopy
    3. 编写后台代码填充相应的DataGridView.

    以上步骤结束后,程序运行正常,并没有出现你遇到的现象。Form1 的Desginer.cs中的语句

    private System.Windows.Forms.DataGridView dataGridViewCopy; 也在InitializeComponent()方法之外。

    所以,建议你重启一下VS,看这个问题是否还继续存在 。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us


    2012年8月22日 7:06
    版主

全部回复

  • Hi,

    中文论坛没有Winform的相应论坛,所以你可以到英文论坛重新开贴: http://social.msdn.microsoft.com/Forums/en-US/winforms/threads

    或者你使用什么编程语言?C# 还是Vb? 我会帮助你移到相应的论坛。


    Vicky Song [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月21日 9:22
  • 使用的是C#  麻烦给我移动下吧   不过这个中文的,放过去的话是不是要译成英文的呢

    以经验为武器,以技术为后盾

    2012年8月22日 2:36
  • 你好,

    我按照你的描述尝试如下:

    1. 在另一个解决方案中拷贝 DataGridView :dataGridViewOriginal
    2. 将拷贝的DataGridView 放到新的解决方案的Form1中,并更改几处属性,如DataGridview的名称(dataGridViewCopy
    3. 编写后台代码填充相应的DataGridView.

    以上步骤结束后,程序运行正常,并没有出现你遇到的现象。Form1 的Desginer.cs中的语句

    private System.Windows.Forms.DataGridView dataGridViewCopy; 也在InitializeComponent()方法之外。

    所以,建议你重启一下VS,看这个问题是否还继续存在 。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us


    2012年8月22日 7:06
    版主
  • 你好,

    我按照你的描述尝试如下:

    1. 在另一个解决方案中拷贝 DataGridView :dataGridViewOriginal
    2. 将拷贝的DataGridView 放到新的解决方案的Form1中,并更改几处属性,如DataGridview的名称(dataGridViewCopy
    3. 编写后台代码填充相应的DataGridView.

    以上步骤结束后,程序运行正常,并没有出现你遇到的现象。Form1 的Desginer.cs中的语句

    private System.Windows.Forms.DataGridView dataGridViewCopy; 也在InitializeComponent()方法之外。

    所以,建议你重启一下VS,看这个问题是否还继续存在 。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us

          还真如Lisa Zhu 所说   我也重新建了两个解决方案模拟了下当时操作,结果还就真没再出现过这个奇怪问题,不知是何故会引发此奇怪问题?

    以经验为武器,以技术为后盾

    2012年8月23日 7:08
  • 你好,

    建议将你的解决方案(DataGridView 被拷入的)拷贝到另一台与你现在机器相同的机器上进行相同的操作,看该问题能否重现。

    如果不重现,这个奇怪的问题就真的非常奇怪,很难找到答案。

    如果这个问题重现了,说明是由你的解决方案的设置引起的。你可以将你的解决方案上传到skydrive上 ,并给出链接 让我们大家帮你一起找问题所在。

    谢谢。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月23日 7:29
    版主