DCYcity 2023-07-17 02:49 采纳率: 16.7%
浏览 17

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

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

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

img

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-17 04:04
    关注
    • 这个问题的回答你可以参考下: 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;
          // 保存其他控件的状态...
      }
      

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

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

    评论

报告相同问题?

问题事件

  • 创建了问题 7月17日