LoginSignup
2
4

More than 3 years have passed since last update.

C# DataGridView BindingListで自動的に表示される列を制御する

Last updated at Posted at 2020-01-24

背景

BindingListに自分で作ったクラスを登録し、DataGridViewのdatasourceにセットするとDataGridViewにデータが反映され便利である。ただ、自分で作ったクラスのデータのうち、一部しかデータグリッドに乗せたくない場面もある。その時にわざわざデータグリッド表示用のクラスと、それ以外のデータも管理するクラスを別々に作成するのは管理上手間がかかる。このため、1つのクラスだけでデータグリッドに表示させる/させないを制御する方法を調べたのでメモっておく。

方法

クラスのpublicなプロパティとして用意したデータのみがDataGirdViewに表示されるという性質を利用し、以下のように欺けばよい。

 /// データグリッド表示用のプロセスデータクラス
    public class ProcessData
    {
        // データグリッドで自動で見せる列
        public int processId { get; set; }
        public string Arguments { get; set; }
        public DateTime startTime { get; set; }
        public DateTime endTime { get; set; }
        public String exitCode { get; set; }
        public String status { get; set; }


        // データグリッドで自動で見せない列
        private Process process;
        private String inputString;
        private StringBuilder outputStringBuilder;
        private string workingDirectory;
        private PythonCommandExecutorForm detailForm;

        private string fileName;

        public ProcessData()
        {
            this.outputStringBuilder = new StringBuilder();
        }

        public void setProcess(Process process)
        {
            this.process = process;
        }
        public Process getProcess()
        {
            return this.process;
        }
        public void setOutputStringBuilder(StringBuilder outputStringBuilder)
        {
            this.outputStringBuilder = outputStringBuilder;
        }
        public StringBuilder getOutputStringBuilder()
        {
            return this.outputStringBuilder;
        }
        public void setWorkingDirectory(String workingDirectory)
        {
            this.workingDirectory = workingDirectory;
        }
        public String getWorkingDirectory()
        {
            return this.workingDirectory;
        }
        public void setFileName(String fileName)
        {
            this.fileName = fileName;
        }
        public String getFileName()
        {
            return this.fileName;
        }
        public String getInputString()
        {
            return this.inputString;
        }
        public void setInputString(String inputString)
        {
            this.inputString = inputString;
        }
        public void setDetailForm(PythonCommandExecutorForm detailForm)
        {
            this.detailForm = detailForm;
        }
        public PythonCommandExecutorForm getDetailForm()
        {
            return this.detailForm;
        }

    } 
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4