田敏
返回博客列表
技术

绩效考核系统

田敏
2023-04-021 分钟阅读
ProjectPractice

绩效考核系统

1.设置treenode节点选中时选中整行

将fullrowselect设置为true

2.使得容器元件随着窗体大小变化

将anchor四个方向全部上锁

3.设置父容器

将父容器isMdicontainer设置为true

         //加载窗体
            FrmUserManager frmUserManager = new FrmUserManager();
            //将窗体创建到Panl2里面 作为子容器
            frmUserManager.MdiParent = this;
            frmUserManager.Parent = splitContainer1.Panel2;
            frmUserManager.Show();
4.使子容器在父容器固定 设置子容器

windowstate为maximized

formborderstyle设置为none

5.MdiParent和Parent属性的区别

在Windows窗体应用程序中,MdiParent和Parent属性都用于设置一个控件的父容器。但是,它们之间有一些重要的区别:

  1. MdiParent属性是专门用于设置子窗体的父窗体,而Parent属性是通用的控件容器属性。MdiParent属性只能用于子窗体(即具有IsMdiContainer属性设置为true的父窗体),而Parent属性可以用于任何控件容器。
  2. MdiParent属性只能在子窗体上设置,而Parent属性可以在任何控件上设置。
  3. MdiParent属性的设置会导致子窗体成为MDI(多文档界面)子窗体,也就是说,它们可以在MDI父窗体中嵌套显示。而Parent属性的设置只是指定控件的父容器,并不会导致任何特定的行为。

因此,MdiParent属性和Parent属性在功能和使用方面存在一些重要的区别。如果你正在编写一个MDI应用程序,并且需要在MDI父窗体中显示子窗体,那么你需要使用MdiParent属性。如果你只是想将一个控件添加到一个容器中,而不需要任何特定的行为,那么你可以使用Parent属性。

6.Assembly获取程序集的几种方法

在.NET Framework中,我们可以使用多种方法获取程序集,下面介绍其中几种常见的方法:

  1. Assembly.GetExecutingAssembly方法:获取当前执行代码的程序集。

    System.Reflection;
    // 获取当前程序集
    Assembly assembly = Assembly.GetExecutingAssembly();
    
  2. Assembly.GetEntryAssembly方法:获取包含应用程序入口点的程序集。

    System.Reflection;
    // 获取包含应用程序入口点的程序集
    Assembly assembly = Assembly.GetEntryAssembly();
    
  3. Assembly.Load方法:根据程序集名称加载程序集。

     System.Reflection;
    // 加载程序集
    Assembly assembly = Assembly.Load("MyAssembly");
    
  4. Assembly.LoadFrom方法:从指定路径加载程序集。

     System.Reflection;
    // 加载指定路径的程序集
    Assembly assembly = Assembly.LoadFrom(@"C:\MyAssembly.dll");
    
  5. Assembly.LoadFile方法:从指定路径加载程序集,但不会加载程序集的依赖项。

     System.Reflection;
    // 加载指定路径的程序集,但不会加载依赖项
    Assembly assembly = Assembly.LoadFile(@"C:\MyAssembly.dll");
    

需要注意的是,这些方法都需要引用System.Reflection命名空间。除了上述方法,还有一些其他的方法可以获取程序集,如Assembly.GetAssembly方法可以根据类型获取程序集,Assembly.ReflectionOnlyLoad方法可以以只反射的方式加载程序集等。

C#中的反射机制是一种让程序在运行时动态地获取对象的类型信息并访问其成员(属性、方法、字段等)的机制。反射机制可以在运行时分析和调用程序集、模块、类型和成员。

下面是使用C#反射机制的一些常见步骤:

  1. 引用System.Reflection命名空间。

    using System.Reflection;
    
  2. 获取需要反射的对象的Type对象。

    Type myType = typeof(MyClass); // MyClass是需要反射的类型
    

    或者

    MyClass myObject = new MyClass(); // 实例化一个需要反射的对象
    Type myType = myObject.GetType(); // 获取该对象的Type对象
    
  3. 使用Type对象来获取成员信息,如属性、方法、字段等。

    // 获取MyClass中的属性名为"Name"的属性信息
    PropertyInfo propertyInfo = myType.GetProperty("Name");
    
    // 获取MyClass中名为"MyMethod"的方法信息
    MethodInfo methodInfo = myType.GetMethod("MyMethod");
    
    // 获取MyClass中名为"myField"的字段信息
    FieldInfo fieldInfo = myType.GetField("myField");
    
  4. 使用MethodInfo对象来调用方法,使用PropertyInfo和FieldInfo对象来访问属性和字段。

    // 调用MyClass中的名为"MyMethod"的方法
    methodInfo.Invoke(myObject, null);
    
    // 访问MyClass中名为"Name"的属性
    string name = (string)propertyInfo.GetValue(myObject);
    
    // 访问MyClass中名为"myField"的字段
    int value = (int)fieldInfo.GetValue(myObject);
    

使用反射机制可以使程序更加灵活,可以在运行时动态地获取类型信息并执行相应的操作。不过,由于反射涉及到动态类型转换和方法调用,所以可能会对程序的性能产生一定的影响。因此,应该在使用反射时进行一定的优化和测试,确保程序的性能和稳定性。

版权协议:MIT返回列表