C#Winform有兩個DataGridView控制元件,怎么調整一左一右自適應,想讓它們各占一半大小,最大化表單的時候也是,拖動的時候也是。

設定了好多東西,都沒成功
uj5u.com熱心網友回復:
設定DockStyle,一個靠左,一個靠右。實作INotifyPropertyChanged介面,創建一個中間通知變數來獲取和設定表單的一半寬度,然后兩個控制元件的寬度與這個中間變數系結,最后在表單SizeChanged事件中來設定中間變數的值。
public partial class Form1 : Form, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private int halfWidth;
public int HalfWidth
{
get => halfWidth;
set { halfWidth = value; RaisePropertyChanged(nameof(HalfWidth)); }
}
public Form1()
{
InitializeComponent();
dataGridView1.Dock = DockStyle.Left;
dataGridView2.Dock = DockStyle.Right;
dataGridView1.DataBindings.Add(nameof(dataGridView1.Width), this, nameof(HalfWidth), false, DataSourceUpdateMode.OnPropertyChanged);
dataGridView2.DataBindings.Add(nameof(dataGridView2.Width), this, nameof(HalfWidth), false, DataSourceUpdateMode.OnPropertyChanged);
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
HalfWidth = Width / 2;
}
}
uj5u.com熱心網友回復:
用容器控制元件 SplitContainer 或 TableLayoutPanel 都能實作該需求,后者更靈活,不需要撰寫任何代碼,全部在設計時設定屬性即可。uj5u.com熱心網友回復:
TableLayoutPanel ,兩列各占50%;TableLayoutPanel 本身和兩個DataGridView的DOCK屬性都設定為FULLuj5u.com熱心網友回復:
DockStyle一個left,一個full
或者
一個right,一個full
直接用SplitContainer也行
uj5u.com熱心網友回復:
public int HalfWidth
{
get => halfWidth;
set { halfWidth = value; RaisePropertyChanged(nameof(HalfWidth)); }
}這里出錯了
uj5u.com熱心網友回復:
這樣一來我視窗頂部那個panel也被覆寫了,有什么辦法讓其顯示出來嗎
uj5u.com熱心網友回復:
Alt+Enter能解決的,都不算錯誤uj5u.com熱心網友回復:
現在是可以運行了,但是我頂部的panel被覆寫了,如果我把panel設定為頂層的話,它又覆寫了下面兩個datagridview的表頭,怎么辦。。
uj5u.com熱心網友回復:
那是top層級不對,簡單操作,滑鼠右鍵“置頂”或者“置底”
當然最保險的操作,切換到UI設計視圖,然后工具列-視圖-其他視窗--檔案大綱,打開檔案大綱視圖,觀察容器和控制元件層級,拖動相關控制元件到合適的層級
uj5u.com熱心網友回復:
必要的時候,新加一個panel,把這個panel的層級從檔案大綱拖動到和你上層panel同級,然后上層設定成top,新增的設定為fill接著在把兩個dgv從檔案大綱里,拖動到新增panel的下級,一個設定為left,一個設定為fill
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/204063.html
標籤:C#
上一篇:C# 服務器程式收到客戶端的資料,如何在MYSQL資料庫中查找符合條件的記錄
下一篇:求指教lamada怎么寫?
