Кликнув по «выбранному» содержимому узла, добавленному в текстовое поле - PullRequest
0 голосов
/ 15 июля 2011

Я изучаю язык программирования C # и создаю надстройку для приложения для расчета заработной платы для SAP business One.У меня есть TreeView, и мне нужно, чтобы имя узла появлялось в TextBox после того, как пользователь нажимает на этот узел или когда он нажимает кнопку «Добавить», желательно только по щелчку.Я использую Visual Studio 2010 и Microsoft SQL Server 2008.

Сценарий:

- Component                        - Parent
          Earnings                     - child
              Housing Allowance                  - content of child
              Mobile Phone Allowance             - clicked and highlighted node
              Mileage Allowance
          Deductions                   - child

В приведенном выше примере я хотел бы, чтобы, если пользователь нажимает «Разрешение на мобильный телефон»и он выделен, в текстовом поле появляется «Разрешение на мобильный телефон».Я не уверен, что это можно сделать без кнопки «Добавить».

Дочерние доходы и вычеты заполняются из базы данных.Мне нужно выше, чтобы сделать калькулятор заработной платы.

Мой код:

private void PayrollFormulaBuilder_Load(object sender, EventArgs e)
{
    // Get service instance
    var earnDeductMasterService = Program.Kernel.Get<IEarnDeductMasterService>();

    //Query database for all records that have earnings
    var earnings = from ed in earnDeductMasterService.GetAllEarnDeductMasters()
                   where ed.U_PD_type.Trim().Equals("Earnings".Trim(), StringComparison.CurrentCultureIgnoreCase)
                   select ed.U_PD_description;

    if (earnings.Any(x => x != null))
    {
        //To populate subtree Earnings with U_PD_description  = Earnings results
        List<string> earningList = new List<string>(earnings) { };

        //adding all earnings to "Earnings" node
        foreach (string earning in earningList)
        {
            treeView1.Nodes[0].Nodes[0].Nodes.Add(earning);
        }
    }
    else
    {
        //Nothing to populate            
    }

    //Query database for all records that have deductions
    var deductions = from ed in earnDeductMasterService.GetAllEarnDeductMasters()
                     where ed.U_PD_type.Trim().Equals("Deductions".Trim(), StringComparison.CurrentCultureIgnoreCase)
                     select ed.U_PD_description;

    if (deductions.Any(x => x != null))
    {
        //To populate subtree Deductions with U_PD_description = Deductions results
        List<string> deductionList = new List<string>(deductions) { };

        //adding all earnings to "Earnings" node
        foreach (string deduction in deductionList)
        {
            treeView1.Nodes[0].Nodes[1].Nodes.Add(deduction);
        }
    }
    else
    {
        //Nothing to populate            
    }
}

Я бы подумал, что мне нужно настроить метод для захвата этого ... но я не уверен

private void treeView1_DoubleClick(object sender, EventArgs e)
{
    if (inputStatus)
    {
        formula_display.Text += "something here"  // my Richtextbox for showing input
    }
    else
    {
        formula_display.Text = "something here"
        inputStatus = true;
    }
}

Ответы [ 2 ]

2 голосов
/ 15 июля 2011

Не могли бы вы использовать событие TreeView AfterSelect вместо вашего "что-то здесь"?

treeview1.AfterSelect += new TreeViewEventHandler(treeview1_AfterSelect);

.. и ..

void treeview1_AfterSelect(object sender, TreeViewEventArgs e)
{
    formula_display.Text = e.Node.Text;
}
0 голосов
/ 15 июля 2011

Вы можете добавить обработчик события к событию NodeMouseClick вашего дерева:

treeView1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(treeView1_NodeMouseClick);

Обработчик события должен выглядеть следующим образом:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            //Identify whether the user has clicked the MobilePhoneAllowance node by
            //using the properties of e.Node

            //Then set TextBox.Text to the required text in the node
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...