这个问题看下面的代码就知道了。
启用注释的那句”propertyGrid1.SelectedObject = new param2();“, 可以看到此现象。
但是如果你把它修改成下面这样,又可以了!
public class param2
{
private int _k1;
private string _str1;
public int k1
{
get { return _k1; }
set { _k1 = value; }
}
public string str1
{
get { return _str1; }
set { _str1 = value; }
}
}丫的原来的两种不同的属性定义对结果有影响。
如果非要按{get;set;} 这种写法,也可以,必须让特性 Browable(true) ,不能是False
Browsable(true)
就像类CAxisParam定义的那样就可以了。
源码:
using Csharp_06;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
private CAxisParam configdata = new CAxisParam();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SaveSACMotionDebugConfig();
MessageBox.Show("ok");
}
private void Form1_Load(object sender, EventArgs e)
{
LoadSACMotionDebugConfig();
//propertyGrid1.SelectedObject = new Go2();
//propertyGrid1.SelectedObject = new param2();
propertyGrid1.SelectedObject = configdata;
}
/// <summary>
/// 保存面板的调试参数
/// </summary>
/// <param name="filename"></param>
public void SaveSACMotionDebugConfig(string filename = "ConfigDataFileName")
{
string moduleDir = AppDomain.CurrentDomain.BaseDirectory;
try
{
var fpath = moduleDir + filename;
var str1 = Newtonsoft.Json.JsonConvert.SerializeObject(configdata);
FileData data = new FileData(fpath);
data.SaveData(str1);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 载入面板的调试参数 异常:ArgumentException
/// </summary>
/// <param name="filename"></param>
/// <returns></returns>
public void LoadSACMotionDebugConfig(string filename = "ConfigDataFileName")
{
string moduleDir = AppDomain.CurrentDomain.BaseDirectory;
var fpath = moduleDir + filename;
if (!File.Exists(fpath))
{
SaveSACMotionDebugConfig();
//throw new ArgumentException("配置文件不存在");
}
FileData data = new FileData(fpath);
var str1 = data.ReadData();
try
{
if (string.IsNullOrEmpty(str1))
{
configdata = new CAxisParam();
}
else
{
configdata = Newtonsoft.Json.JsonConvert.DeserializeObject<CAxisParam>(str1);
}
}
catch (Exception ex)
{
throw new ArgumentException("读面板的参数配置文件,反序列化时失败,详细信息:" + ex.Message);
}
}
}
public class Go
{
private string _Hi = "hi";
public string Hi
{
get { return _Hi; }
set { _Hi = Hi; }
}
}
class Go2
{
private float _TieMu = 5.5f;
private string _Rule = "数子法";
[CategoryAttribute("规则"), DescriptionAttribute("贴目")]
public float TieMu
{
get { return _TieMu; }
set { _TieMu = TieMu; }
}
[CategoryAttribute("规则"), DescriptionAttribute("计算法")]
public string Rule
{
get { return _Rule; }
set { _Rule = Rule; }
}
private int _Black = 0;
private int _White = 0;
[CategoryAttribute("围棋"), DescriptionAttribute("黑")]
public int Black
{
get { return _Black; }
set { _Black = Black; }
}
[CategoryAttribute("围棋"), DescriptionAttribute("白")]
public int White
{
get { return _White; }
set { _White = White; }
}
}
public class param2
{
public int k1 { get; set; }
public string str1 { get; set; }
}
public class CAxisParam
{
/// <summary>
/// 轴的脉冲输出模式
/// </summary>
public enum PlusOutModeEnum
{
OUT_DIR = 0,
OUT_DIR_OUT_NEG,
OUT_DIR_DIR_NEG,
OUT_DIR_ALL_NEG,
O_CW_CCW,
CW_CCW_ALL_NEG
}
/// <summary>
/// 最大速度
/// </summary>
[DisplayName("轴脉冲输出模式"), Description("轴脉冲输出模式,包括两种类型:脉冲方向和双脉冲,共6种细分类"), Category("轴脉冲输出模式"), Browsable(true)]
public PlusOutModeEnum POutMode { get; set; } = PlusOutModeEnum.OUT_DIR;
#region 速度参数
/// <summary>
/// 最大速度
/// </summary>
[DisplayName("最大速度"), Description("设置该轴的最大速度,单位plus/s,缺省值2M"), Category("速度参数"), Browsable(true)]
public double MaxVel { get; set; } = 1024 * 1024 * 2;
/// <summary>
/// 最大停止速度
/// </summary>
[DisplayName("最大停止速度"), Description("设置该轴的最大停止速度,单位plus/s,缺省值2M"), Category("速度参数"), Browsable(true)]
public double MaxStopVel { get; set; } = 1024 * 1024 * 2;
/// <summary>
/// 最大加速度时间
/// </summary>
[DisplayName("最大加速度时间"), Description("设置该轴的最大加速度时间,单位秒"), Category("速度参数"), Browsable(true)]
public double MaxAcc { get; set; } = 1000;
/// <summary>
/// 最大减速度时间
/// </summary>
[DisplayName("最大减速度时间"), Description("设置该轴的最大减速度时间,单位秒"), Category("速度参数"), Browsable(true)]
public double MaxDec { get; set; } = 1000;
/// <summary>
/// 最小加速度时间
/// </summary>
[DisplayName("最小加速度时间"), Description("设置该轴的最小加速度时间,单位秒"), Category("速度参数"), Browsable(true)]
public double MinAcc { get; set; } = 0.001;
/// <summary>
/// 最小减速度时间
/// </summary>
[DisplayName("最小减速度时间"), Description("设置该轴的最小减速度时间,单位秒"), Category("速度参数"), Browsable(true)]
public double MinDec { get; set; } = 0.001;
/// <summary>
/// 起始速度
/// </summary>
[DisplayName("起始速度"), Description("起始速度(初速度)。该值必须小于或者等于运行速度。单位:pulse/s (最大值为 2M) 默认值3000"), Category("速度参数"), Browsable(true)]
public double StartVel { get; set; } = 3000.00;
/// <summary>
/// 运行速度
/// </summary>
[DisplayName("运行速度"), Description("起始速度(初速度)。该值必须小于或者等于运行速度。单位:pulse/s (最大值为 2M) 默认值4000"), Category("速度参数"), Browsable(true)]
public double RunVel { get; set; } = 4000.00;
/// <summary>
/// 加速度
/// </summary>
[DisplayName("加速度"), Description("设置该轴的加速度(单位:s ,最小值为 0.001s)),默认值1"), Category("速度参数"), Browsable(true)]
public double Acc { get; set; } = 1.00;
/// <summary>
/// 减速度
/// </summary>
[DisplayName("减速度"), Description("设置该轴的减速度(单位:s ,最小值为 0.001s),默认值1"), Category("速度参数"), Browsable(true)]
public double Dec { get; set; } = 1.00;
/// <summary>
/// S段速度
/// </summary>
[DisplayName("S段速度"), Description("设置该轴的S段速度(单位:s;范围:0~0.5 s)默认值0"), Category("速度参数"), Browsable(true)]
public double SPara { get; set; } = 0;
/// <summary>
/// 速度类型
/// </summary>
[DisplayName("速度类型"), Description("设置速度类型:梯形或者S型。取值1为S型,默认值为0(梯形)"), Category("速度参数"), Browsable(true)]
public int JK { get; set; } = 0;
/// <summary>
/// 停止速度
/// </summary>
[DisplayName("停止速度"), Description("停止速度。该值必须小于或者等于运行速度。默认值1000"), Category("速度参数"), Browsable(true)]
public double StopVel { get; set; } = 1000.00;
#endregion
}
}---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

本帖最后由 勇哥,很想停止 于 2024-05-29 14:23:35 编辑 

少有人走的路



















