none
错误 31 非静态的字段、方法或属性要求对象引用报错?怎么处理? RRS feed

  • 问题

  • 我在winform中制作了一个程序的设置界面,使用了多了复选框,在解决方案中添加了应用程序配置文件(*.xml.config),并且对界面中复选框属性设置第一项(ApplicationSetting)进行了设置,在窗体中设计了确认与取消按钮,已经用窗体属性中的AccepButton与CancelButton绑定。
    请问,如何能够使得用户改变复选框选定状态后,点击确认按钮保存这些新状态?
    恕小弟愚笨,请赐教!
    2009年9月22日 17:25

答案

  • if(form->DialogResult== DialogResult::OK)
    {
        Properties::Settings::Default->Save();
    }


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 Ray_Ma 2009年9月24日 14:20
    2009年9月22日 18:27
    版主
  • 你好 Sheng Jiang 蒋晟版主给你的是C++版本的,你的项目应该是C#的吧

    if(form.DialogResult== DialogResult.OK)
    {
        Properties.Settings.Default.Save();
    }

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    • 已标记为答案 Ray_Ma 2009年9月24日 14:19
    2009年9月23日 1:20
    版主
  • 你好!
         放在显示那个对话框的代码之后;
         你的对话框的名字.ShowDialog();
         就放在这行以后!
    周雪峰
    • 已标记为答案 Ray_Ma 2009年9月24日 14:19
    2009年9月23日 5:53
    版主
  • 这样试试:
    if (settingDialog1.DialogResult == DialogResult.OK)
                {
                    Properties.Settings.Default.Save();
                }
    周雪峰
    • 已标记为答案 Ray_Ma 2009年9月24日 14:19
    2009年9月24日 13:58
    版主

全部回复

  • if(form->DialogResult== DialogResult::OK)
    {
        Properties::Settings::Default->Save();
    }


    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful.
    Visual C++ MVP
    • 已标记为答案 Ray_Ma 2009年9月24日 14:20
    2009年9月22日 18:27
    版主
  • 小弟愚笨,还肯高手详细解答。

    请问一下,
    这段代码应该放在哪里?accepbutton的click事件?还是窗体的公共代码?
    form应该是指的什么?我这个窗体么?编译报错,提示Form是类型,此处当做变量使用。
    DialogResult::OK、::Default两处的“::”报错,提示应使用“.”
    Properties报错,提示未找到别名。

    等待高手详细解答。谢谢
    2009年9月23日 1:02
  • 你好 Sheng Jiang 蒋晟版主给你的是C++版本的,你的项目应该是C#的吧

    if(form.DialogResult== DialogResult.OK)
    {
        Properties.Settings.Default.Save();
    }

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    • 已标记为答案 Ray_Ma 2009年9月24日 14:19
    2009年9月23日 1:20
    版主
  • 恩。对。是C#的winform开发。
    请问此段代码应该放置何处?
    而且在if语句中的form处总是报错,提示上下文中不存在form,我改为我的窗体名setting,提示非静态……要求对象引用。
    再求高手解答!
    2009年9月23日 2:37
  • 你好!
         放在显示那个对话框的代码之后;
         你的对话框的名字.ShowDialog();
         就放在这行以后!
    周雪峰
    • 已标记为答案 Ray_Ma 2009年9月24日 14:19
    2009年9月23日 5:53
    版主
  • 请问,我按照你的方法调整代码之后。
    总是提示“错误 31 非静态的字段、方法或属性“System.Windows.Forms.Form.DialogResult.get”要求对象引用 G:\Users\Melvillo\Visual Studio 2008\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Form1.cs 200 17 WindowsFormsApplication1”
    请问该怎么解决?
    2009年9月23日 13:29
  • 请问提供你的相关代码?
    周雪峰
    2009年9月24日 6:53
    版主
  • 主窗体设置按钮的click事件

    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void 软件设置ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                setting settingDialog1 = new setting();
                settingDialog1.ShowDialog();
                if (Form.DialogResult == DialogResult.OK)
                {
                    Properties.Settings.Default.Save();
                }
            }
         }
    }

    在if (Form.DialogResult == DialogResult.OK)处报错,Form.DialogResult错误 31 非静态的字段、方法或属性“System.Windows.Forms.Form.DialogResult.get”要求对象引用

    2009年9月24日 11:39
  • 这样试试:
    if (settingDialog1.DialogResult == DialogResult.OK)
                {
                    Properties.Settings.Default.Save();
                }
    周雪峰
    • 已标记为答案 Ray_Ma 2009年9月24日 14:19
    2009年9月24日 13:58
    版主