C # checkBox_CheckedChanged Ссылки в разных файлах - PullRequest
0 голосов
/ 25 февраля 2011

Требование: У меня есть приложение для Windows, написанное на C #, и я пытаюсь добавить в него флажок, где, если он установлен, файлы поиска будут скопированы в подкаталоги на основе zipкод.

Проблема: Когда я ссылаюсь на addzipdir_checkBox.Equals (true) из MainForm.cs на другой странице SearchProcess.cs Я получаю сообщение об ошибке: «addzipdir_checkBox не существует в текущем контексте».Как правильно ссылаться на возникновение checkBox_CheckedChanged?

Вот код на MainForm.cs:

    private void addzipdir_checkBox_CheckedChanged(object sender, EventArgs e)
    {
        if (addzipdir_checkBox.Equals(true))
        {
           Log("Organize files by zip code.");
        }

        if (addzipdir_checkBox.Equals(false))
        {
           Log("Don't Organize files by zip code.");
        }
    }

Вот код на SearchProcess.cs, генерирующий ошибку:

        if (addzipdir_checkBox.Equals(true))
        {

            // adds the given lead's agentid and zip code to the targetpath string 
            string targetzipdir = m_sc.get_TargetPath() + "\\" + AgentID + "\\" + ZIP;

            // If the given lead's zip code subdirectory doesn't exist, create it.
            if (!Directory.Exists(targetzipdir))
            {
                Directory.CreateDirectory(targetzipdir);
            }

            targetFileAndPath = m_sc.get_TargetPath() + "\\" + AgentID + "\\" + ZIP + "\\" + fullFileName;
        }   // end if addzipdir_checkBox.Equals(true)

Ответы [ 2 ]

0 голосов
/ 28 февраля 2011

Я обнаружил, что если вы щелкнете правой кнопкой мыши по переменной и нажмете «Перейти к определению», гораздо проще будет найти ссылку на переменную.Я щелкнул правой кнопкой мыши другую переменную, которая была вызвана через MainForm и обнаружил, что все они были вызваны через файл SearchCriteria.Мне пришлось передать значение addzipdir_checkbox, указанное в файле MainForm.cs, через файл SearchCriteria.cs, ​​а затем вызвать его в файле SearchProcess.cs.

Вот мой код в файле SearchCriteria.cs:

public class SearchCriteria
{
    private String Corp;
    private String OrderNumber;
    private String Campaign;
    private String City;
    private String State;
    private String Zip;
    private String SourcePath;
    private String TargetPath;
    private bool SearchOR;
    private bool SearchAND;
    private bool addzipdirectory_checkBox;

    public SearchCriteria()
    {
    }

    public SearchCriteria(String Corp,
                          String OrderNumber,
                          String Campaign,
                          String City,
                          String State,
                          String Zip,
                          String SourcePath,
                          String TargetPath,
                          bool SearchOR,
                          bool SearchAND,
                          bool addzipdirectory_checkBox)              
    {
        this.Corp = Corp;
        this.OrderNumber = OrderNumber;
        this.Campaign = Campaign;
        this.City = City;
        this.State = State;
        this.Zip = Zip;
        this.SourcePath = SourcePath;
        this.TargetPath = TargetPath;
        this.SearchOR = SearchOR;
        this.SearchAND = SearchAND;
        this.addzipdirectory_checkBox = addzipdirectory_checkBox;
    }
    public bool get_addzipdir_checkBox()
    {
        return addzipdirectory_checkBox;
    }
    public void set_addzipdir_checkBox(bool x)
    {
        addzipdirectory_checkBox = x;
    }
}               

Вот мой код в файле Searchprocess.cs:

            // Copy the file if ANY of the search criteria have been met
            if (found)
            {

                m_form.Invoke(m_form.m_DelegateAddString, new Object[] {"FOUND: Order_No: " + Order_No +
                                                                        " barcode: " + barcode +
                                                                        " MailerCode: " + MailerCode +
                                                                        " AgentID: " + AgentID +
                                                                        " City: " + City +
                                                                        " State: " + State +
                                                                        " ZIP: " + ZIP});


                //passes values to TransferFile 
                TransferFile(directory, barcode, AgentID, ZIP);
            }
        } // end for that finds each matching record 

    }

    // find and copy the file to the target directory string ZIP
    private void TransferFile(string sourceDir, string filename, string AgentID, string ZIP)
    {
        string fullFileName = filename + ".pdf";
        string fullFileNameAndPath = sourceDir + "\\" + fullFileName;
        string targetFileAndPath;

        if (m_sc.get_addzipdir_checkBox()==true)
        {

            // adds the given lead's agentid and zip code to the targetpath string 
            string targetzipdir = m_sc.get_TargetPath() + "\\" + AgentID + "\\" + ZIP;

            // If the given lead's zip code subdirectory doesn't exist, create it.
            if (!Directory.Exists(targetzipdir))
            {
                Directory.CreateDirectory(targetzipdir);
            }

            targetFileAndPath = m_sc.get_TargetPath() + "\\" + AgentID + "\\" + ZIP + "\\" + fullFileName;
        }   // end if addzipdir_checkBox.Equals(true)
0 голосов
/ 25 февраля 2011
  • Вы должны убедиться, что addzipdir_checkBox общедоступен.Для этого вам нужно использовать редактор форм, выбрать addzipdir_Checkbox и изменить элемент сетки «Модификаторы» свойства на public или internal.

  • Затем вам нужно найтиспособ ссылки на экземпляр этой формы, что-то вроде этого:

    if (myForm.addzipdir_checkBox.Equals (true)) {... ...}

...