コード例 #1
0
        private void ConstructQuery(BaseNode node, int x, ref int y)
        {
            const int Horz = 100;
            const int Vert = 25;

            int index = 0;

            var label = new Label()
            {
                Text   = node.Property?.Name,
                Left   = x * Horz,
                Top    = y * Vert,
                Width  = 100,
                Height = 25
            };
            var button = new Button()
            {
                Text   = mSigns[index],
                Left   = x * Horz + label.Width,
                Top    = y * Vert,
                Width  = 35,
                Height = 25
            };
            var text = new TextBox()
            {
                Left   = x * Horz + label.Width + button.Width,
                Top    = y * Vert,
                Width  = 100,
                Height = 25
            };

            button.Click += (object sender, EventArgs e) =>
            {
                var self = sender as Button;
                index     = (++index) % mSigns.Length;
                self.Text = mSigns[index];
                node.ComparisonOperator = BooleanOperator.FromString(
                    self.Text
                    );
            };

            text.TextChanged += (object sender, EventArgs e) =>
            {
                var self = sender as TextBox;
                node.Criterium = self.Text;
            };

            QueryFlowLayout.Controls.Add(label);
            QueryFlowLayout.Controls.Add(button);
            QueryFlowLayout.Controls.Add(text);

            foreach (var kv in node.Nodes)
            {
                ++y;
                ConstructQuery(kv.Value, x + 1, ref y);
            }
        }