Как отобразить tablelayoutpanel или datagridview в дочерней форме в windows forms?
пожалуйста, обратитесь по ссылке проблема — ImgBB[^] для скриншота проблемы. Я использую visual studio 2019 community edition. Также есть Fontawesome.Библиотека Sharp установлена в моем проекте. Пожалуйста, помогите, я новичок в среде windows forms. Любая помощь будет очень признательна. Если вам трудно понять проблему, пожалуйста, попросите более подробную информацию.
Спасибо!!
Прасанна - разработчик и предприниматель .Net
Пожалуйста обратитесь к этой ссылке для получения подробного изображения я использовал оба проблема-Screen2 — ImgBB[^]. Я использовал как tablelayoutpanel, так и datagridview contro. Оба показывают одну и ту же проблему.
Что я уже пробовал:
Я попытался использовать TableLayoutPanel и элемент управления DataGridView, чтобы увидеть, сохраняется ли проблема. Но он сохранился и с DataGridView. Я попытался добавить как tablelayoutpanel, так и DataGridView программно, но все равно безуспешно. Вы можете увидеть темные линии в TableLayoutPanel, как показано на скриншоте по ссылке --> проблема — ImgBB[^].
Это код, который я пробовал
using System; using System.Drawing; using System.Windows.Forms; using FontAwesome.Sharp; namespace ModernUIApp.Forms { public partial class MainForm : Form { private IconButton currentBtn; private Panel leftBorderBtn; private Color currentColor; private Form currentChildForm; public MainForm() { InitializeComponent(); leftBorderBtn = new Panel(); leftBorderBtn.Size = new Size(7, 40); //panel5.Controls.Add(leftBorderBtn); //Form this.Text = string.Empty; this.ControlBox = false; this.DoubleBuffered = true; this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; } //Methods private void OpenChildForm(Form childForm) { if (currentChildForm != null) { currentChildForm.Close(); } currentChildForm = childForm; childForm.TopLevel = false; childForm.FormBorderStyle = FormBorderStyle.None; childForm.Dock = DockStyle.Fill; // childForm.Font.Size = 10 pnlDesktop.Controls.Add(childForm); pnlDesktop.Tag = childForm; childForm.BringToFront(); childForm.Show(); } private void button1_Click(object sender, EventArgs e) { //ActivateButton(sender, RGBColors.color2); OpenChildForm(new ConferencesForm()); } } }
Richard MacCutchan
Вам нужно показать код, который создает форму, так как здесь никто не может догадаться, что вы написали.
prasannanirmale
Я обновил вопрос с помощью кода. Спасибо за быстрый ответ. Действительно ценить.
Richard MacCutchan
Извините, я не вижу связи между этим кодом и вашей картинкой или не понимаю, в какой части содержится проблема.
prasannanirmale
I have two forms MainForm and ConfernceForm. Mainform is main screen which has leftpanel, toppanel and middlepanel. middle panel named "pnlDesktop" is used to display child form "conferenceform" in this case. In Image you can see TableLayoutPanel to the right side of the middle panel. I have mentioned "problem" word in red color there. If you look pass button 3, button 4 etc. you don't see cell border. It has disappeared for unknown reason to me. I have used drag and drop controls to design most of the form.What you see in the picture is all static for now. And in the childform I have two panels "Contacts" and "Conferences". In contact panel I have TableLayoutPanel which display problem after loading in the MainForm. I hope this helps.
Спасибо!
prasannanirmale
Спасибо @Dave Kreskowiak, я использую форму для загрузки childform, это правда. Можем ли мы создать весь экран в качестве пользовательского элемента управления в соответствии с моим требованием? Я попытался использовать datagridview в следующей панели только для того, чтобы проверить возможности рисования элемента управления. Это показывает ту же проблему. Вы можете проверить https://ibb.co/9m5DDNN эта ссылка для другого скриншота прилагается.Я также добавил эту ссылку к описанию моего вопроса.Любая дополнительная помощь будет весьма признательна. Спасибо!
Dave Kreskowiak
Да, вы можете создать целую "панель" элементов управления в UserControl.
Если все, что вы делаете, - это выкладываете кучу кнопок в сетке, использование DataGridView-плохая идея, поскольку это тяжелый элемент управления, который имеет гораздо больше возможностей, чем вам нужно для этого.
TableLayoutPanel-гораздо лучший выбор, к тому же он не будет рисовать линии сетки по умолчанию.