Bagaimana cara saya meratakan kontrol di StatusStrip?

93

Saya mencoba untuk mengarahkan kontrol ke kanan di a StatusStrip. Bagaimana saya bisa melakukan itu?

Saya tidak melihat properti untuk disetel pada ToolStripItemkontrol yang menentukan kesejajaran fisiknya pada induk StatusStrip.

Bagaimana cara saya membuat pesan drop-down menjadi rata kanan? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90

Eric Schoonover
sumber
4
Buat item toolbar label dengan properti Spring disetel ke true. Detail: dotnetperls.com/statusstrip (PS Ya, saya tahu itu pertanyaan lama.)
Nick Alexeev

Jawaban:

228

Ditemukan melalui forum MSDN segera setelah memposting :)

Anda dapat menggunakan a ToolStripLabelto pseudo right align control dengan menyetel Textproperti ke string.Emptydan menyetel Springproperti ke true. Ini akan menyebabkannya mengisi semua ruang yang tersedia dan mendorong semua kontrol ke kanan ToolStripLabelatas.

Eric Schoonover
sumber
28
Ini akan bekerja HANYA jika StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(yang merupakan default)
AZ.
13
Bagus. Sebuah StatusStripLabel dengan Spring di kedua sisi muncul di tengah kontrol
mcdon
Saya berharap ada cara "nyata" untuk melakukan ini, tetapi ini berhasil, jadi terima kasih. Saya ingin tahu apa yang dilakukan Alignmentproperti itu, karena tidak melakukan apa pun dalam aplikasi saya.
TheGateKeeper
2
Saya ingin tahu properti Alignment apa yang tidak saya lihat di properti seperti itu.
TaW
Ini hanya akan mengizinkan satu item setelah label dengan "Spring", yang lain tidak akan muncul, gunakan metode @VBobCat sebagai gantinya.
Pablo Carrasco Hernández
14

Bagi saya, dibutuhkan dua langkah sederhana:

  1. Setel MyRightIntendedToolStripItem.AlignmentkeRight
  2. Setel MyStatusStrip.LayoutStylekeHorizontalStackWithOverflow
VBobCat
sumber
5

Sebagai catatan tambahan, ini disebabkan oleh fakta bahwa di Win32 API sel memiliki lebar tetap atau mengisi ruang yang tersisa -1

int statwidths[] = {100, -1};

SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");

Jika memori melayani saya dengan benar, Anda hanya dapat memiliki satu sel isian (-1) per bilah status.

Anda juga bisa menambahkan sel tengah ketiga dan memberi ini properti isian untuk mendapatkan StatusBar yang tampak lebih konsisten. Konsisten karena Message memiliki inset di kiri kanan di tempat yang Anda harapkan. Sedikit seperti tembakan mspaint yang ditemukan di halaman MSDN untuk StatusBars

Saya suka pendekatan kreatifnya: D

Martijn Laarman
sumber
Itu berlaku untuk StatusBars, bukan untuk StatusStrips, yang merupakan kode terkelola sepenuhnya.
Filip Navara
3

Anda dapat menampilkan Buttondi akhir StatusStripdengan menggunakan logika di bawah ini.

  1. Tambahkan ToolstripLabelkeStatusStrip
  2. Tetapkan teks sebagai string.Empty
  3. Setel PaddinguntukToolstripLabel

Sebagai contoh:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
Chandran R
sumber
tambahkan sel tengah ketiga dan berikan properti isian ini. Saya tidak melihat properti seperti itu.
TaW
2

Pertahankan label Toolstrip, setel properti Spring sebagai true dan untuk teks rata label di BottomLeft

Visakh VA
sumber
1

Saya menemukan bahwa Anda dapat mengatur Tata Letak StatusStrip ke HorizontalStackWithOverflow. Kemudian, untuk setiap kontrol pada StatusStrip yang Anda inginkan di sisi kanan, atur kontrol Alignment ke Kanan.

Saya lebih suka ini karena Anda tidak memerlukan kontrol tambahan atau dummy untuk menyelaraskan.

knightgambit
sumber
0

Jika Anda menyetel properti Spring kontrol label strip status ke true, maka label tersebut akan menggunakan ruang apa pun yang tidak digunakan oleh kontrol lain di StatusStrip.

Packiyaraj Ganesan
sumber
Jawaban ini sudah diberikan. Saat menjawab pertanyaan lama dengan banyak jawaban, Anda perlu memeriksa ini sebelumnya.
marsh-wiggle
-2

Saya menemukan cara umum untuk mengatur lokasi kontrol StatusStrip. Anda dapat menampilkan Tombol di posisi mana pun StatusStripdengan menggunakan langkah-langkah di bawah ini.

  1. Tambahkan ToolstripLabel ke StatusStrip
  2. Tetapkan teks sebagai jumlah spasi yang sesuai

    toolStripStatusLabel1.Text = "";

  3. Jika tata letak bukan yang Anda inginkan, lanjutkan ke langkah 2 untuk mengubah jumlah ruang toolStripStatusLabel1.Text, jika tidak, pekerjaan telah selesai.

Alan Ackart
sumber
-2

Setel properti strip alat RightToLeft ke True.

TravisHendrickson
sumber