powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
7 сообщений из 7, страница 1 из 1
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38729916
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Grid с DataGridViewButtonColumn.
К сожалению никак не могу сделать так, чтобы кнопка настроить доступ показывалась только для выделенного элемента грида.

Кто-нибудь сталкивался с таким?
...
Рейтинг: 0 / 0
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38729959
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89,

может, cell.Enabled будет достаточно?
...
Рейтинг: 0 / 0
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38730135
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89,

А может проще вынести кнопку за пределы грида?
...
Рейтинг: 0 / 0
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38731077
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,

вряд ли. если строк будет много то эта каша из кнопок справа будет раздражать..


Alex Kuznetsov,

к сожалению интерфейс нужен именно такой. к тому же количество полей в гриде будет меняться динамически.
...
Рейтинг: 0 / 0
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38731078
Santa89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov,

вытащить кнопку на верх не позволяют особенности интерфейса - там уже занято место((
...
Рейтинг: 0 / 0
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38731095
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89,

Тогда вот это может натолкнуть на мысль:
(за говнокод прошу сильно не пинать)
Form1.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
using System;
using System.Drawing;
using System.Windows.Forms;

namespace GridBtnSample
{
    public partial class Form1 : Form
    {
        private int oldRowIndex = 0;
        public Form1()
        {
            InitializeComponent();
        }


        private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.ColumnIndex != 2) return;
            if ((e.RowIndex != dataGridView1.CurrentRow.Index) || (dataGridView1.CurrentRow.IsNewRow))
            {
                e.Graphics.FillRectangle(new SolidBrush(dataGridView1.BackgroundColor), e.CellBounds);
                e.Handled = true;
            }
        }

        private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)
        {
            this.dataGridView1.InvalidateRow(oldRowIndex);
        }

        private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            this.dataGridView1.InvalidateRow(oldRowIndex);
            oldRowIndex = e.RowIndex;
        }


        private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if ((e.RowIndex == dataGridView1.CurrentRow.Index) && (!dataGridView1.CurrentRow.IsNewRow) && (e.ColumnIndex == 2))
            {
                MessageBox.Show("Yesssss !");
            }
        }
    }
}


Form1.Designer.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
namespace GridBtnSample
{
    partial class Form1
    {
        /// <summary>
        /// Требуется переменная конструктора.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Код, автоматически созданный конструктором форм Windows

        /// <summary>
        /// Обязательный метод для поддержки конструктора - не изменяйте
        /// содержимое данного метода при помощи редактора кода.
        /// </summary>
        private void InitializeComponent()
        {
            this.dataGridView1 = new System.Windows.Forms.DataGridView();
            this.FIO = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.Login = new System.Windows.Forms.DataGridViewTextBoxColumn();
            this.btnColumn = new System.Windows.Forms.DataGridViewButtonColumn();
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
            this.SuspendLayout();
            // 
            // dataGridView1
            // 
            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
            this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
            this.FIO,
            this.Login,
            this.btnColumn});
            this.dataGridView1.Location = new System.Drawing.Point(12, 12);
            this.dataGridView1.MultiSelect = false;
            this.dataGridView1.Name = "dataGridView1";
            this.dataGridView1.Size = new System.Drawing.Size(588, 175);
            this.dataGridView1.TabIndex = 0;
            this.dataGridView1.CellMouseDown += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView1_CellMouseDown);
            this.dataGridView1.CellPainting += new System.Windows.Forms.DataGridViewCellPaintingEventHandler(this.dataGridView1_CellPainting);
            this.dataGridView1.CurrentCellChanged += new System.EventHandler(this.dataGridView1_CurrentCellChanged);
            this.dataGridView1.RowEnter += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_RowEnter);
            // 
            // FIO
            // 
            this.FIO.HeaderText = "ФИО";
            this.FIO.Name = "FIO";
            // 
            // Login
            // 
            this.Login.HeaderText = "Login";
            this.Login.Name = "Login";
            // 
            // btnColumn
            // 
            this.btnColumn.HeaderText = "";
            this.btnColumn.Name = "btnColumn";
            this.btnColumn.Text = "Настроить доступ";
            this.btnColumn.UseColumnTextForButtonValue = true;
            this.btnColumn.Width = 180;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(643, 352);
            this.Controls.Add(this.dataGridView1);
            this.Name = "Form1";
            this.Text = "Form1";
            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.DataGridView dataGridView1;
        private System.Windows.Forms.DataGridViewTextBoxColumn FIO;
        private System.Windows.Forms.DataGridViewTextBoxColumn Login;
        private System.Windows.Forms.DataGridViewButtonColumn btnColumn;
    }
}



А ещё лучше сделать наследника от DataGridViewButtonColumn и использовать его. А в нём переопределить некоторые методы, отвечающие за обработку событий от мыши и не только.
...
Рейтинг: 0 / 0
DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
    #38731096
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Santa89Alex Kuznetsov,

вытащить кнопку на верх не позволяют особенности интерфейса - там уже занято место((Ну тогда ещё вариант, сделать кнопку не как столбец таблицы, а как отдельный контролл и перемещать её в нужную позицию при смене текущей строки в таблице.
Поместить кнопку поверх таблицы.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / DataGridViewButtonColumn - как отображать кнопку только для выделенного пользователя
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]