#c# #.net #winforms #.net-4.0 #ui-automation
#c# #.net #winforms #.net-4.0 #пользовательский интерфейс-автоматизация
Вопрос:
Мне нужно нарисовать элементы управления, используя метод управления .NET «show».net.
Предположим, мне нужно нарисовать TreeViewControl в WinForm, предоставив тестовые данные для некоторого события click, но это не рисование поверх родительской WinForm.
Вот код:
public class TestTreeView: TreeView
{
public TestTreeView()
{
}
public override Color BackColor
{
set;
get;
}
public override Image BackgroundImage { set; get; }
public override ImageLayout BackgroundImageLayout { set; get; }
public BorderStyle BorderStyle { get { return base.BorderStyle; } }
public bool CheckBoxes { get { return base.CheckBoxes; } }
protected override CreateParams CreateParams
{ get { return base.CreateParams; } }
protected Size DefaultSize { get { return base.DefaultSize; } }
protected override bool DoubleBuffered { set; get; }
public TreeViewDrawMode DrawMod { get { return base.DrawMode; } }
public override Color ForeColor { set; get; }
.....
.....
.....
..all other overrideables
#endregion
public void Sort()
{
}
public override string ToString()
{
return null;
}
protected override void WndProc(ref Message m)
{
}
public void setPropeties()
{
this.BackColor = Color.Black;
this.BackgroundImage = null;
this.ForeColor = Color.Blue;
this.Text = "Test Control";
}
public void Show()
{
// I used following line of statement
base.show();
// then for the testing sake, also construct test control object and
// set some data to if, it also didn't work as well.
Control oControl = new Control();
oControl.Text = "Test Control";
oControl.BackColor = Color.Black;
oControl.Height = 125;
oControl.Show();
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)
{
TestTreeView oTreeView = new TestTreeView();
oTreeView.setPropeties();
oTreeView.Show();
}
}
Что мне делать?
Комментарии:
1. конечно, используйте
this.Controls.Add(oControl);
inShow
, НО гораздо лучше стереть весь код -> изучите основные принципы ООП, а затем продолжайте. ‘this’ .. все равно не сработает2. почему «это» не сработает? все ли это статические методы? простые свойства класса.
3. Не могли бы вы, пожалуйста, написать donw точный измененный код из предложенных выше, то есть этот. Управление. Добавить (oControl)? где это должно быть? и, добавив в список дополнительных элементов управления, как это будет отображаться в существующей WinForm?
4. вы говорите об общей структуре кода? Не могли бы вы дать соответствующий совет?
5. хорошо, давайте начнем с самого начала… почему вы хотите
draw controls using .NET "show" method
Ответ №1:
Эти строки на самом деле ничего не делают:
Control oControl = new Control();
oControl.Text = "Test Control";
oControl.BackColor = Color.Black;
oControl.Height = 125;
oControl.Show();
oControl
Не имеет Parent
(точно, Container
), так где же это будет отображаться? Вам нужно добавить это в контейнер (возможно, элемент управления, который вы создаете, используя this
)
Комментарии:
1. да, это я сделал и преуспел с этим, но у меня возникла другая проблема, смотрите Мои дополнительные комментарии, сэр..
2. Мне не нужно создавать объект «Control» вручную, мне нужно вручную создать testButton, TestTreeView и т.д., Которые, в свою очередь, должны отображаться точно. СОЗДАЙТЕ соответствующий элемент управления, имея все те свойства, которые фактически задаются клиентом этих классов. поскольку эти классы фактически принимают наследование с их собственными соответствующими классами (например, TreeView, кнопка наследования testButton) и т.д.