C# 控件状态怎么用静态方法分离出来

C# 控件状态怎么用静态方法分离出来

如题,每个窗体内的控件太多 ,程序代码太长,我想用静态方法把他分离出来。但是普通类又没办法获取控件,这个要怎么弄呢?

img

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/372051
  • 你也可以参考下这篇文章:C# 获得其他(另外)应用程序(窗口)文本框内容的弱智方法,网上的那些狗屎文章,居然排名第一,搜素引擎真特么是个狗屁,为此,我整整找了好几天。
  • 除此之外, 这篇博客: C#打开指定目录、打开指定目录且选中指定文件、打开指定文件中的 二、实现操作 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •         /// <summary>
            /// 打开目录
            /// </summary>
            /// <param name="folderPath">目录路径(比如:C:\Users\Administrator\)</param>
            private static void OpenFolder(string folderPath)
            {
                if (string.IsNullOrEmpty(folderPath)) return;
    
                Process process = new Process();
                ProcessStartInfo psi = new ProcessStartInfo("Explorer.exe");
                psi.Arguments = folderPath;
                process.StartInfo = psi;
    
                try
                {
                    process.Start();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    process?.Close();
    
                }
    
            }
    
            /// <summary>
            /// 打开目录且选中文件
            /// </summary>
            /// <param name="filePathAndName">文件的路径和名称(比如:C:\Users\Administrator\test.txt)</param>
            private static void OpenFolderAndSelectedFile(string filePathAndName)
            {
                if (string.IsNullOrEmpty(filePathAndName)) return;
    
                Process process = new Process();
                ProcessStartInfo psi = new ProcessStartInfo("Explorer.exe");
                psi.Arguments = "/e,/select,"+filePathAndName;
                process.StartInfo = psi;
    
                //process.StartInfo.UseShellExecute = true;
                try
                {
                    process.Start();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    process?.Close();
    
                }
            }
    
            /// <summary>
            /// 打开文件
            /// </summary>
            /// <param name="filePathAndName">文件的路径和名称(比如:C:\Users\Administrator\test.txt)</param>
            /// <param name="isWaitFileClose">是否等待文件关闭(true:表示等待)</param>
            private static void OpenFile(string filePathAndName,bool isWaitFileClose=true)
            {
                Process process = new Process();
                ProcessStartInfo psi = new ProcessStartInfo(filePathAndName);
                process.StartInfo = psi;
    
                process.StartInfo.UseShellExecute = true;
    
                try
                {
                    process.Start();
    
                    //等待打开的程序关闭
                    if (isWaitFileClose)
                    {
                        process.WaitForExit();
                    }
                    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    process?.Close();
                   
                }
            }
  • 您还可以看一下 王翔老师的基于C#的超市进销存系统 6小时开发过程实录 毕业设计课程中的 毕业设计 超市进销存管理系统功能演示 第一部分小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题描述中提到想使用静态方法将控件状态分离出来,但是普通类无法获取控件。可以通过以下几步来实现该功能:

    1. 创建一个静态类,用于存储和管理控件的状态。可以在类中定义静态字段来保存当前窗体的每个控件的状态,例如控件的可见性、文本内容等。
    public static class ControlStateManager
    {
        public static bool CheckBox1Visible { get; set; }
        public static string TextBox1Text { get; set; }
        // 其他控件的状态...
    }
    
    1. 在窗体的Load事件中,将控件的状态设置为静态类中保存的值。
    private void Form1_Load(object sender, EventArgs e)
    {
        checkBox1.Visible = ControlStateManager.CheckBox1Visible;
        textBox1.Text = ControlStateManager.TextBox1Text;
        // 设置其他控件的状态...
    }
    
    1. 在窗体的Closing事件中,将控件的状态保存到静态类中。
    private void Form1_Closing(object sender, CancelEventArgs e)
    {
        ControlStateManager.CheckBox1Visible = checkBox1.Visible;
        ControlStateManager.TextBox1Text = textBox1.Text;
        // 保存其他控件的状态...
    }
    

    这样,每次窗体加载时,就会使用静态类中保存的控件状态来更新控件的状态。当窗体关闭时,会将当前控件的状态保存到静态类中,下次打开窗体时再次使用这些状态。

    这种方法可以在静态类中定义多个字段来保存不同的控件状态,以满足多种需求。另外,如果有很多窗体都需要使用这种控件状态分离的方式,可以将静态类定义在公共的类库中,供所有窗体使用。

要么用静态类定义 继承, 要么改为 c# +html 混编