예제 #1
0
        /// <summary>
        /// 设置对应的视图行
        /// </summary>
        /// <param name="p_row"></param>
        /// <param name="p_isAsync">是否异步设置DataContext</param>
        public void SetViewRow(LvItem p_row, bool p_isAsync)
        {
            if (_row == p_row)
            {
                return;
            }

            // 虚拟行时需要重置
            if (_row != null)
            {
                _row.ValueChanged = null;
            }

            _row = p_row;
            if (_row != null)
            {
                // 值变化时通过切换DataContext更新
                _row.ValueChanged = OnValueChanged;
            }

            if (p_isAsync)
            {
                SetDataContextAsync();
            }
            else
            {
                DataContext = _row;
            }
        }
예제 #2
0
            public static string GetText(IntPtr hWnd, int itemIndex, int column)
            {
                string result = null;

                const int maxTextLength = 1024;
                var       textPtr       = Marshal.AllocHGlobal(maxTextLength * 2);

                try
                {
                    var lvItem = new LvItem
                    {
                        mask       = LvifText,
                        iItem      = itemIndex,
                        iSubItem   = column,
                        pszText    = textPtr,
                        cchTextMax = maxTextLength
                    };

                    if (SendMessage(hWnd, LvmGetItemW, IntPtr.Zero, ref lvItem) != IntPtr.Zero)
                    {
                        result = Marshal.PtrToStringUni(textPtr);
                    }
                }
                finally
                {
                    Marshal.FreeHGlobal(textPtr);
                }

                return(result);
            }
예제 #3
0
        private void BtnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                // metodo ArmazenarFuncionario
                // responsavel por inserir um novo objeto Funcionario
                // em uma posição da list
                listaFuncionarios.ArmazenarFuncionario(tbNome.Text,
                                                       tbCPF.Text,
                                                       tbCargo.Text,
                                                       float.Parse(tbSalario.Text),
                                                       float.Parse(tbDesconto.Text),
                                                       float.Parse(tbAdicional.Text),
                                                       cbDesconto.Checked);

                // alimento uma "sublista" de item (que é uma linha da list view)
                // "pegando" os dados  dos textbox
                int          length = listaFuncionarios.RetornarTamanhoLista() - 1;
                ListViewItem item   = LvItem.Item(listaFuncionarios.RetornaObjetoFuncionario(length));
                // adicionando o objeto item na listview
                lvListaFuncionarios.Items.Add(item);

                MessageBox.Show($"Calculou Salário Líquido para o funcionário {tbNome.Text}", "Atenção");
                LimparCampos();
            }
            catch (DomainException err)
            {
                MessageBox.Show(err.Message, "ATENÇÃO", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }
예제 #4
0
        private void BtnOrdenar_Click(object sender, EventArgs e)
        {
            // metodo que ordena a lista de objetos funcionarios
            listaFuncionarios.OrdenarFuncionario();

            //limpa a listview (grid da tela)
            lvListaFuncionarios.Items.Clear();

            // obtem o tamanho da list
            // lembrando que aqui neste escopo, o listaFuncionario não é manipulado como list
            // apenas dentro da classe
            int tamanhoLista = listaFuncionarios.RetornarTamanhoLista();

            // objeto funcionarioObj "em branco"
            Funcionario funcionarioObj = new Funcionario();

            //percorre a list do inicio ao fim
            for (int indice = 0; indice < tamanhoLista; indice++)
            {
                // cada indice, funcionarioObj irá receber o objeto Funcionario da posição
                funcionarioObj = listaFuncionarios.RetornaObjetoFuncionario(indice);

                // alimento uma "sublista" de item (que é uma linha da list view)
                // "pegando" os dados direto do funcionarioObj
                ListViewItem item = LvItem.Item(funcionarioObj);
                // adicionando o objeto item na listview
                lvListaFuncionarios.Items.Add(item);
            }
        }
예제 #5
0
 public UIElement Create(LvItem p_item)
 {
     return(new TextBlock
     {
         Text = p_item.Row.Str("xm"),
         Margin = new Thickness(10),
         Foreground = (p_item.Row.Str("xb") == "男") ? Res.BlackBrush : Res.RedBrush,
     });
 }
예제 #6
0
        /// <summary>
        /// 动态创建磁贴项内容
        /// </summary>
        /// <param name="p_item"></param>
        /// <returns></returns>
        LvRow CreateTileItemByRowView(LvItem p_item)
        {
            var row = new TileRow(_owner, (IRowView)_owner.View, p_item);

            if (p_item != null)
            {
                row.SetViewRow(p_item, false);
            }
            return(row);
        }
예제 #7
0
        /// <summary>
        /// 由模板生成磁贴项内容
        /// </summary>
        /// <param name="p_item"></param>
        /// <returns></returns>
        LvRow CreateTileItemByTemplate(LvItem p_item)
        {
            var row = new TileRow(_owner, (DataTemplate)_owner.View);

            if (p_item != null)
            {
                row.SetViewRow(p_item, false);
            }
            return(row);
        }
예제 #8
0
        /// <summary>
        /// 磁贴的项
        /// </summary>
        /// <param name="p_item"></param>
        /// <returns></returns>
        LvRow CreateTileFormItem(LvItem p_item)
        {
            var row = new TileFormRow(_owner);

            if (p_item != null)
            {
                row.SetViewRow(p_item, false);
            }
            return(row);
        }
예제 #9
0
    void CreateItem(float positionX, float positionY, int vitri)
    {
        LvItem levelCreate = lvPrefab.Spawn <LvItem>
                             (
            new Vector3(positionX, positionY, 85f),
            lvPrefab.transform.rotation
                             );

        levelCreate.setData(vitri);

        levelCreate.transform.parent = this.gameObject.transform;
    }
예제 #10
0
        private void MinhaJanela_Load(object sender, EventArgs e)
        {
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            LimparCampos();

            Controle           controle         = new Controle();
            List <Funcionario> funcionariosList = controle.SelectAllFuncionarios();

            for (int indice = 0; indice < funcionariosList.Count; indice++)
            {
                listaFuncionarios.ArmazenarFuncionario(funcionariosList[indice]);
                lvListaFuncionarios.Items.Add(LvItem.Item(funcionariosList[indice]));
            }
        }
        private void RefreshListView()
        {
            var files = CheckBox1.IsChecked.HasValue && CheckBox1.IsChecked.Value
                        //? Directory.GetFiles(TargetPath, "*.max", SearchOption.AllDirectories)
                        //: Directory.GetFiles(TargetPath, "*.max", SearchOption.TopDirectoryOnly);
            ? Directory.EnumerateFiles(TargetPath, "*.max", SearchOption.AllDirectories)
            : Directory.EnumerateFiles(TargetPath, "*.max", SearchOption.TopDirectoryOnly);

            var items = new List <LvItem>();

            foreach (var file in files)
            {
                var docInfo = ParseDocInfo(file);

                var warningInfo = (ValidateObjectsName(docInfo) > 0) ? "\u26A0" : "";
                var tip         = (ValidateObjectsName(docInfo) > 0) ? "May have ALC scripts" : "";

                var verInfo = GetVersionInfo(docInfo.Values.ToArray()[0]);
                if (!verInfo.TryGetValue(0, out var verMax))
                {
                    verMax = "???";
                }
                if (!verInfo.TryGetValue(1, out var verSave))
                {
                    verSave = "???";
                }

                var item = new LvItem
                {
                    About         = warningInfo,
                    AboutTooltip  = tip,
                    FileName      = Path.GetFileNameWithoutExtension(file),
                    FilePath      = file,
                    Version       = verMax,
                    SaveAsVersion = verSave,
                    SumInfo       = null,
                    DocInfo       = docInfo,
                };

                items.Add(item);
            }
            ListView1.ItemsSource = items;

            var view = (CollectionView)CollectionViewSource.GetDefaultView(ListView1.ItemsSource);

            view?.SortDescriptions.Add(new SortDescription("About", ListSortDirection.Descending));
            view?.SortDescriptions.Add(new SortDescription("FileName", ListSortDirection.Ascending));
        }
예제 #12
0
        /// <summary>
        /// 由模板选择器生成磁贴项内容
        /// </summary>
        /// <param name="p_item"></param>
        /// <returns></returns>
        LvRow CreateTileItemBySelector(LvItem p_item)
        {
            var temp = ((DataTemplateSelector)_owner.View).SelectTemplate(p_item);

            if (temp == null)
            {
                throw new Exception("未指定行模板!");
            }

            var row = new TileRow(_owner, temp);

            if (p_item != null)
            {
                row.SetViewRow(p_item, false);
            }
            return(row);
        }
예제 #13
0
파일: SysTrace.xaml.cs 프로젝트: Daoting/dt
        public static string ServiceName(LvItem p_vr)
        {
            var row = (Row)p_vr.Data;

            switch ((TraceOutType)row["type"])
            {
            case TraceOutType.RpcCall:
            case TraceOutType.RpcRecv:
                return(row.Str("service"));

            case TraceOutType.WsCall:
            case TraceOutType.WsRecv:
                return("ws");

            case TraceOutType.ServerPush:
                return("push");

            default:
                return(null);
            }
        }
예제 #14
0
 private static extern IntPtr SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, ref LvItem lParam);
예제 #15
0
 public TileRow(Lv p_owner, IRowView p_rowView, LvItem p_item) : base(p_owner)
 {
     LoadContent(p_rowView.Create(p_item));
     AttachEvent();
 }