Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,457

HOME > .NET Framework > Forum > C# WinApp ช่วยดู inheritance BindingNavigator ให้หน่อยครับ



 

C# WinApp ช่วยดู inheritance BindingNavigator ให้หน่อยครับ

 



Topic : 127404



โพสกระทู้ ( 4,071 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook



คือผมต้องการ เขียน Control โดย inheritance BindingNavigator ขึ้นมาใช้เอง(ไม่รู้ว่าใช้คำถูกไม๊นะครับ)
โดยที่ต้องการคืออยากให้ ToolStripComboBox อยู่ด้านหลัง

1

แต่กลับเป็นแบบนี้ครับ

2

โค้ดมีแค่นี้ครับ

Code (C#)
public class TorBindingNavigator : BindingNavigator
    {
        private ToolStripComboBox cmb;
        public TorBindingNavigator()
        {
            cmb = new ToolStripComboBox();
            Items.AddRange(new ToolStripItem[] { cmb });
        }

    }


ผมดูใน BindingNavigator ของ .net เอง

Code (VB.NET)
//------------------------------------------------------------------------------
// <copyright file="BindingNavigator.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
//------------------------------------------------------------------------------

namespace System.Windows.Forms {

    using System;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Diagnostics.CodeAnalysis;
    using System.Drawing;
    using System.Globalization;
    using System.Runtime.InteropServices;

    [
    ComVisible(true),
    ClassInterface(ClassInterfaceType.AutoDispatch),
    DefaultProperty("BindingSource"),
    DefaultEvent("RefreshItems"),
    Designer("System.Windows.Forms.Design.BindingNavigatorDesigner, " + AssemblyRef.SystemDesign),
    SRDescription(SR.DescriptionBindingNavigator)
    ]

    public class BindingNavigator : ToolStrip, ISupportInitialize {

        private BindingSource bindingSource;

        private ToolStripItem moveFirstItem;
        private ToolStripItem movePreviousItem;
        private ToolStripItem moveNextItem;
        private ToolStripItem moveLastItem;
        private ToolStripItem addNewItem;
        private ToolStripItem deleteItem;
        private ToolStripItem positionItem;
        private ToolStripItem countItem;

        private String countItemFormat = SR.GetString(SR.BindingNavigatorCountItemFormat);

        private EventHandler onRefreshItems = null;

        private bool initializing = false;

        private bool addNewItemUserEnabled = true;
        private bool deleteItemUserEnabled = true;


        [EditorBrowsable(EditorBrowsableState.Never)]
        public BindingNavigator() : this(false) {
        }


        public BindingNavigator(BindingSource bindingSource) : this(true) {
            BindingSource = bindingSource;
        }

        [EditorBrowsable(EditorBrowsableState.Never)]
        public BindingNavigator(IContainer container) : this(false) {
            if (container == null) {
                throw new ArgumentNullException("container");
            }

            container.Add(this);
        }

        public BindingNavigator(bool addStandardItems) {
            if (addStandardItems) {
                AddStandardItems();
            }
        }

        public void BeginInit() {
            initializing = true;
        }

        public void EndInit() {
            initializing = false;
            RefreshItemsInternal();
        }

        /// <devdoc>
        ///     Unhooks the BindingNavigator from the BindingSource.
        /// </devdoc>
        protected override void Dispose(bool disposing) {
            if (disposing) {
                BindingSource = null; // ...unwires from events of any prior BindingSource
            }

            base.Dispose(disposing);
        }

        public virtual void AddStandardItems() {

            //
            // Create items
            //

            MoveFirstItem    = new System.Windows.Forms.ToolStripButton();
            MovePreviousItem = new System.Windows.Forms.ToolStripButton();
            MoveNextItem     = new System.Windows.Forms.ToolStripButton();
            MoveLastItem     = new System.Windows.Forms.ToolStripButton();
            PositionItem     = new System.Windows.Forms.ToolStripTextBox();
            CountItem        = new System.Windows.Forms.ToolStripLabel();
            AddNewItem       = new System.Windows.Forms.ToolStripButton();
            DeleteItem       = new System.Windows.Forms.ToolStripButton();

            ToolStripSeparator separator1 = new System.Windows.Forms.ToolStripSeparator();
            ToolStripSeparator separator2 = new System.Windows.Forms.ToolStripSeparator();
            ToolStripSeparator separator3 = new System.Windows.Forms.ToolStripSeparator();

            char ch = string.IsNullOrEmpty(Name) || char.IsLower(Name[0]) ? 'b' : 'B';

            MoveFirstItem.Name    = ch + "indingNavigatorMoveFirstItem";
            MovePreviousItem.Name = ch + "indingNavigatorMovePreviousItem";
            MoveNextItem.Name     = ch + "indingNavigatorMoveNextItem";
            MoveLastItem.Name     = ch + "indingNavigatorMoveLastItem";
            PositionItem.Name     = ch + "indingNavigatorPositionItem";
            CountItem.Name        = ch + "indingNavigatorCountItem";
            AddNewItem.Name       = ch + "indingNavigatorAddNewItem";
            DeleteItem.Name       = ch + "indingNavigatorDeleteItem";
            separator1.Name       = ch + "indingNavigatorSeparator";
            separator2.Name       = ch + "indingNavigatorSeparator";
            separator3.Name       = ch + "indingNavigatorSeparator";

            MoveFirstItem.Text    = SR.GetString(SR.BindingNavigatorMoveFirstItemText);
            MovePreviousItem.Text = SR.GetString(SR.BindingNavigatorMovePreviousItemText);
            MoveNextItem.Text     = SR.GetString(SR.BindingNavigatorMoveNextItemText);
            MoveLastItem.Text     = SR.GetString(SR.BindingNavigatorMoveLastItemText);
            AddNewItem.Text       = SR.GetString(SR.BindingNavigatorAddNewItemText);
            DeleteItem.Text       = SR.GetString(SR.BindingNavigatorDeleteItemText);

            CountItem.ToolTipText    = SR.GetString(SR.BindingNavigatorCountItemTip);
            PositionItem.ToolTipText = SR.GetString(SR.BindingNavigatorPositionItemTip);
            CountItem.AutoToolTip    = false;
            PositionItem.AutoToolTip = false;

            PositionItem.AccessibleName = SR.GetString(SR.BindingNavigatorPositionAccessibleName);
            //
            // Set up images
            //

            Bitmap moveFirstImage    = new Bitmap(typeof(BindingNavigator), "BindingNavigator.MoveFirst.bmp");
            Bitmap movePreviousImage = new Bitmap(typeof(BindingNavigator), "BindingNavigator.MovePrevious.bmp");
            Bitmap moveNextImage     = new Bitmap(typeof(BindingNavigator), "BindingNavigator.MoveNext.bmp");
            Bitmap moveLastImage     = new Bitmap(typeof(BindingNavigator), "BindingNavigator.MoveLast.bmp");
            Bitmap addNewImage       = new Bitmap(typeof(BindingNavigator), "BindingNavigator.AddNew.bmp");
            Bitmap deleteImage       = new Bitmap(typeof(BindingNavigator), "BindingNavigator.Delete.bmp");

            moveFirstImage.MakeTransparent(System.Drawing.Color.Magenta);
            movePreviousImage.MakeTransparent(System.Drawing.Color.Magenta);
            moveNextImage.MakeTransparent(System.Drawing.Color.Magenta);
            moveLastImage.MakeTransparent(System.Drawing.Color.Magenta);
            addNewImage.MakeTransparent(System.Drawing.Color.Magenta);
            deleteImage.MakeTransparent(System.Drawing.Color.Magenta);

            MoveFirstItem.Image    = moveFirstImage;
            MovePreviousItem.Image = movePreviousImage;
            MoveNextItem.Image     = moveNextImage;
            MoveLastItem.Image     = moveLastImage;
            AddNewItem.Image       = addNewImage;
            DeleteItem.Image       = deleteImage;

            MoveFirstItem.RightToLeftAutoMirrorImage = true;
            MovePreviousItem.RightToLeftAutoMirrorImage = true;
            MoveNextItem.RightToLeftAutoMirrorImage = true;
            MoveLastItem.RightToLeftAutoMirrorImage = true;
            AddNewItem.RightToLeftAutoMirrorImage = true;
            DeleteItem.RightToLeftAutoMirrorImage = true;

            MoveFirstItem.DisplayStyle    = ToolStripItemDisplayStyle.Image;
            MovePreviousItem.DisplayStyle = ToolStripItemDisplayStyle.Image;
            MoveNextItem.DisplayStyle     = ToolStripItemDisplayStyle.Image;
            MoveLastItem.DisplayStyle     = ToolStripItemDisplayStyle.Image;
            AddNewItem.DisplayStyle       = ToolStripItemDisplayStyle.Image;
            DeleteItem.DisplayStyle       = ToolStripItemDisplayStyle.Image;

            //
            // Set other random properties
            //
            PositionItem.AutoSize = false;
            PositionItem.Width = 50;

            //
            // Add items to strip
            //

            Items.AddRange(new ToolStripItem[] {
                                MoveFirstItem,
                                MovePreviousItem,
                                separator1,
                                PositionItem,
                                CountItem,
                                separator2,
                                MoveNextItem,
                                MoveLastItem,
                                separator3,
                                AddNewItem,
                                DeleteItem,
                                });
        }

        [
        DefaultValue(null),
        SRCategory(SR.CatData),
        SRDescription(SR.BindingNavigatorBindingSourcePropDescr),
        TypeConverter(typeof(ReferenceConverter)),
        SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")
        ]
        public BindingSource BindingSource {
            get {
                return bindingSource;
            }

            set {
                WireUpBindingSource(ref bindingSource, value);
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorMoveFirstItemPropDescr)
        ]
        public ToolStripItem MoveFirstItem {
            get {
                if (moveFirstItem != null && moveFirstItem.IsDisposed) {
                    moveFirstItem = null;
                }
                return moveFirstItem;
            }

            set {
                WireUpButton(ref moveFirstItem, value, new EventHandler(OnMoveFirst));
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorMovePreviousItemPropDescr)
        ]
        public ToolStripItem MovePreviousItem {
            get {

                if (movePreviousItem != null && movePreviousItem.IsDisposed) {
                    movePreviousItem = null;
                }
                
                return movePreviousItem;
            }

            set {
                WireUpButton(ref movePreviousItem, value, new EventHandler(OnMovePrevious));
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorMoveNextItemPropDescr)
        ]
        public ToolStripItem MoveNextItem {
            get {
                if (moveNextItem != null && moveNextItem.IsDisposed) {
                    moveNextItem = null;
                }
                return moveNextItem;
            }

            set {
                WireUpButton(ref moveNextItem, value, new EventHandler(OnMoveNext));
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorMoveLastItemPropDescr)
        ]
        public ToolStripItem MoveLastItem {
            get {
                if (moveLastItem != null && moveLastItem.IsDisposed) {
                    moveLastItem = null;
                }
                return moveLastItem;
            }

            set {
                WireUpButton(ref moveLastItem, value, new EventHandler(OnMoveLast));
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorAddNewItemPropDescr)
        ]
        public ToolStripItem AddNewItem {
            get {
                if (addNewItem != null && addNewItem.IsDisposed) {
                    addNewItem = null;
                }
                return addNewItem;
            }

            set {
                if (addNewItem != value && value != null) {
                    value.InternalEnabledChanged += new System.EventHandler(OnAddNewItemEnabledChanged);
                    addNewItemUserEnabled = value.Enabled;
                }
                WireUpButton(ref addNewItem, value, new EventHandler(OnAddNew));
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorDeleteItemPropDescr)
        ]
        public ToolStripItem DeleteItem {
            get {
                if (deleteItem != null && deleteItem.IsDisposed) {
                    deleteItem = null;
                }
                return deleteItem;
            }

            set {
                if (deleteItem != value && value != null) {
                    value.InternalEnabledChanged += new System.EventHandler(OnDeleteItemEnabledChanged);
                    deleteItemUserEnabled = value.Enabled;
                }
                WireUpButton(ref deleteItem, value, new EventHandler(OnDelete));

            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorPositionItemPropDescr)
        ]
        public ToolStripItem PositionItem {
            get {
                if (positionItem != null && positionItem.IsDisposed) {
                    positionItem = null;
                }
                return positionItem;
            }

            set {
                WireUpTextBox(ref positionItem, value, new KeyEventHandler(OnPositionKey), new EventHandler(OnPositionLostFocus));
            }
        }

        [
        TypeConverter(typeof(ReferenceConverter)),
        SRCategory(SR.CatItems),
        SRDescription(SR.BindingNavigatorCountItemPropDescr)
        ]
        public ToolStripItem CountItem {
            get {
                if (countItem != null && countItem.IsDisposed) {
                    countItem = null;
                }
                return countItem;
            }

            set {
                WireUpLabel(ref countItem, value);
            }
        }

        [
        SRCategory(SR.CatAppearance),
        SRDescription(SR.BindingNavigatorCountItemFormatPropDescr)
        ]
        public String CountItemFormat {
            get {
                return countItemFormat;
            }

            set {
                if (countItemFormat != value) {
                    countItemFormat = value;
                    RefreshItemsInternal();
                }
            }
        }

        [
        SRCategory(SR.CatBehavior),
        SRDescription(SR.BindingNavigatorRefreshItemsEventDescr)
        ]
        public event EventHandler RefreshItems {
            add {
                onRefreshItems += value;
            }
            remove {
                onRefreshItems -= value;
            }
        }

        [EditorBrowsable(EditorBrowsableState.Advanced)]
        protected virtual void RefreshItemsCore() {
            int count, position;
            bool allowNew, allowRemove;

            // Get state info from the binding source (if any)
            if (bindingSource == null) {
                count = 0;
                position = 0;
                allowNew = false;
                allowRemove = false;
            }
            else {
                count = bindingSource.Count;
                position = bindingSource.Position + 1;
                allowNew = (bindingSource as IBindingList).AllowNew;
                allowRemove = (bindingSource as IBindingList).AllowRemove;
            }

            // Enable or disable items (except when in design mode)
            if (!DesignMode) {
                if (MoveFirstItem != null)    moveFirstItem.Enabled    = (position > 1);
                if (MovePreviousItem != null) movePreviousItem.Enabled = (position > 1);
                if (MoveNextItem != null)     moveNextItem.Enabled     = (position < count);
                if (MoveLastItem != null)     moveLastItem.Enabled     = (position < count);

                if (AddNewItem != null) {
                    System.EventHandler handler         =  new System.EventHandler(OnAddNewItemEnabledChanged);
                    addNewItem.InternalEnabledChanged   -= handler;
                    addNewItem.Enabled                  =  (addNewItemUserEnabled && allowNew);
                    addNewItem.InternalEnabledChanged   += handler;
                }

                if (DeleteItem != null) {
                    System.EventHandler handler         =  new System.EventHandler(OnDeleteItemEnabledChanged);
                    deleteItem.InternalEnabledChanged   -= handler;
                    deleteItem.Enabled                  =  (deleteItemUserEnabled && allowRemove && count > 0);
                    deleteItem.InternalEnabledChanged   += handler;
                }

                if (PositionItem != null)     positionItem.Enabled     = (position > 0 && count > 0);
                if (CountItem != null)        countItem.Enabled        = (count > 0);
            }

            // Update current position indicator
            if (positionItem != null) {
                positionItem.Text = position.ToString(CultureInfo.CurrentCulture);
            }

            // Update record count indicator
            if (countItem != null) {
                countItem.Text = DesignMode ? CountItemFormat : String.Format(CultureInfo.CurrentCulture, CountItemFormat, count);
            }
        }

        protected virtual void OnRefreshItems() {
            // Refresh all the standard items
            RefreshItemsCore();

            // Raise the public event
            if (onRefreshItems != null) {
                onRefreshItems(this, EventArgs.Empty);
            }
        }

        public bool Validate() {
            bool validatedControlAllowsFocusChange;
            return this.ValidateActiveControl(out validatedControlAllowsFocusChange);
        }

        private void AcceptNewPosition() {
            // If no position item or binding source, do nothing
            if (positionItem == null || bindingSource == null) {
                return;
            }

            // Default to old position, in case new position turns out to be garbage
            int newPosition = bindingSource.Position;

            try {
                // Read new position from item text (and subtract one!)
                newPosition = Convert.ToInt32(positionItem.Text, CultureInfo.CurrentCulture) - 1;
            }
            catch (System.FormatException) {
                // Ignore bad user input
            }
            catch (System.OverflowException) {
                // Ignore bad user input
            }

            if (newPosition != bindingSource.Position) {
                bindingSource.Position = newPosition;
            }

            RefreshItemsInternal();
        }

        private void CancelNewPosition() {
            RefreshItemsInternal();
        }
  
        private void OnMoveFirst(object sender, EventArgs e) {
            if (Validate()) {
                if (bindingSource != null) {
                    bindingSource.MoveFirst();
                    RefreshItemsInternal();
                }
            }
        }

        private void OnMovePrevious(object sender, EventArgs e) {
            if (Validate()) {
                if (bindingSource != null) {
                    bindingSource.MovePrevious();
                    RefreshItemsInternal();
                }
            }
        }

        private void OnMoveNext(object sender, EventArgs e) {
            if (Validate()) {
                if (bindingSource != null) {
                    bindingSource.MoveNext();
                    RefreshItemsInternal();
                }
            }
        }

        private void OnMoveLast(object sender, EventArgs e) {
            if (Validate()) {
                if (bindingSource != null) {
                    bindingSource.MoveLast();
                    RefreshItemsInternal();
                }
            }
        }

        private void OnAddNew(object sender, EventArgs e) {
            if (Validate()) {
                if (bindingSource != null) {
                    bindingSource.AddNew();
                    RefreshItemsInternal();
                }
            }
        }

        private void OnDelete(object sender, EventArgs e) {
            if (Validate()) {
                if (bindingSource != null) {
                    bindingSource.RemoveCurrent();
                    RefreshItemsInternal();
                }
            }
        }

        private void OnPositionKey(object sender, KeyEventArgs e) {
            switch (e.KeyCode) {
                case Keys.Enter:
                    AcceptNewPosition();
                    break;
                case Keys.Escape:
                    CancelNewPosition();
                    break;
            }
        }

        private void OnPositionLostFocus(object sender, EventArgs e) {
            AcceptNewPosition();
        }

        private void OnBindingSourceStateChanged(object sender, EventArgs e) {
            RefreshItemsInternal();
        }

        private void OnBindingSourceListChanged(object sender, ListChangedEventArgs e) {
            RefreshItemsInternal();
        }

        private void RefreshItemsInternal() {
            // Block all updates during initialization
            if (initializing) {
                return;
            }

            // Call method that updates the items (overridable)
            OnRefreshItems();
        }

        private void ResetCountItemFormat() {
            countItemFormat = SR.GetString(SR.BindingNavigatorCountItemFormat);
        }

        private bool ShouldSerializeCountItemFormat() {
            return countItemFormat != SR.GetString(SR.BindingNavigatorCountItemFormat);
        }

        private void OnAddNewItemEnabledChanged(object sender, EventArgs e) {
            if (AddNewItem != null) {
                addNewItemUserEnabled = addNewItem.Enabled;
            }
        }

        private void OnDeleteItemEnabledChanged(object sender, EventArgs e) {
            if (DeleteItem != null) {
                deleteItemUserEnabled = deleteItem.Enabled;
            }
        }

        private void WireUpButton(ref ToolStripItem oldButton, ToolStripItem newButton, EventHandler clickHandler) {
            if (oldButton == newButton) {
                return;
            }

            if (oldButton != null) {
                oldButton.Click -= clickHandler;
            }

            if (newButton != null) {
                newButton.Click += clickHandler;
            }

            oldButton = newButton;
            RefreshItemsInternal();
        }

        private void WireUpTextBox(ref ToolStripItem oldTextBox, ToolStripItem newTextBox, KeyEventHandler keyUpHandler, EventHandler lostFocusHandler) {
            if (oldTextBox != newTextBox) {
                ToolStripControlHost oldCtrl = oldTextBox as ToolStripControlHost;
                ToolStripControlHost newCtrl = newTextBox as ToolStripControlHost;

                if (oldCtrl != null) {
                    oldCtrl.KeyUp -= keyUpHandler;
                    oldCtrl.LostFocus -= lostFocusHandler;
                }

                if (newCtrl != null) {
                    newCtrl.KeyUp += keyUpHandler;
                    newCtrl.LostFocus += lostFocusHandler;
                }

                oldTextBox = newTextBox;
                RefreshItemsInternal();
            }
        }

        private void WireUpLabel(ref ToolStripItem oldLabel, ToolStripItem newLabel) {
            if (oldLabel != newLabel) {
                oldLabel = newLabel;
                RefreshItemsInternal();
            }
        }

        private void WireUpBindingSource(ref BindingSource oldBindingSource, BindingSource newBindingSource) {
            if (oldBindingSource != newBindingSource) {
                if (oldBindingSource != null) {
                    oldBindingSource.PositionChanged    -= new EventHandler(OnBindingSourceStateChanged);
                    oldBindingSource.CurrentChanged     -= new EventHandler(OnBindingSourceStateChanged);
                    oldBindingSource.CurrentItemChanged -= new EventHandler(OnBindingSourceStateChanged);
                    oldBindingSource.DataSourceChanged  -= new EventHandler(OnBindingSourceStateChanged);
                    oldBindingSource.DataMemberChanged  -= new EventHandler(OnBindingSourceStateChanged);
                    oldBindingSource.ListChanged        -= new ListChangedEventHandler(OnBindingSourceListChanged);
                }

                if (newBindingSource != null) {
                    newBindingSource.PositionChanged    += new EventHandler(OnBindingSourceStateChanged);
                    newBindingSource.CurrentChanged     += new EventHandler(OnBindingSourceStateChanged);
                    newBindingSource.CurrentItemChanged += new EventHandler(OnBindingSourceStateChanged);
                    newBindingSource.DataSourceChanged  += new EventHandler(OnBindingSourceStateChanged);
                    newBindingSource.DataMemberChanged  += new EventHandler(OnBindingSourceStateChanged);
                    newBindingSource.ListChanged        += new ListChangedEventHandler(OnBindingSourceListChanged);
                }

                oldBindingSource = newBindingSource;
                RefreshItemsInternal();
            }
        }

    }

}


พบว่ามี AddStandardItems()

เหมือนปัญหาจะเป็นเพราะว่า
เมื่อเราเรียกใช้ TorBindingNavigator
จะเกิด
Items.AddRange(new ToolStripItem[] { cmb });
ก่อนที่ BindingNavigator จะ
AddStandardItems() อีกที

แบบนี้เราจะแก้ยังไงให้
AddStandardItems() ก่อนแล้วค่อย Items.AddRange(new ToolStripItem[] { cmb });



Tag : .NET, C#, VS 2012 (.NET 4.x)







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-04-29 10:38:00 By : lamaka.tor View : 717 Reply : 6
 

 

No. 1



โพสกระทู้ ( 4,071 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ปล.

Code (C#)
private static IList GetListFromType(Type type) {
            IList list = null;

            if (typeof(ITypedList).IsAssignableFrom(type) && typeof(IList).IsAssignableFrom(type)) {
                list = CreateInstanceOfType(type) as IList;
            }
            else if (typeof(IListSource).IsAssignableFrom(type)) {
                list = (CreateInstanceOfType(type) as IListSource).GetList();
            }
            else {
                list = CreateBindingList(ListBindingHelper.GetListItemType(type));
            }

            return list;
        }


ผมเข้าใจมาโดยตลอดว่าถ้ายัด static เข้าไปก็แสดงว่าเราเรียกใช้ได้แบบไม่ต้องประกาศตัวแปร
แล้ว private ก็คือให้ใช้ได้เฉพาะใน class นั้นๆไม่ถ่ายทอด

สรุป
private static
คือ

เรียกใช้ได้โดยไม่ต้องประกาศตัวแปร แต่ใช้ได้แค่ใน class เท่านั้นนะ ใช่แบบนี้รึป่าวครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-29 10:43:15 By : lamaka.tor
 


 

No. 2



โพสกระทู้ ( 4,071 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-03 09:58:58 By : lamaka.tor
 

 

No. 3



โพสกระทู้ ( 819 )
บทความ ( 0 )



สถานะออฟไลน์


เห็น Code ยาว ๆ แล้วไม่กล้ายุ่งเลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-03 10:10:07 By : fonfire
 


 

No. 4



โพสกระทู้ ( 819 )
บทความ ( 0 )



สถานะออฟไลน์


ลองแบบนี้ดูครับ

Code (C#)
    public class TorBindingNavigator : BindingNavigator
    {
        private ToolStripComboBox cmb;

        public TorBindingNavigator() 
        {
        }

        public override void AddStandardItems()
        {
            base.AddStandardItems();
            cmb = new ToolStripComboBox();
            Items.AddRange(new ToolStripItem[] { cmb });
        }
    }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-03 10:38:24 By : fonfire
 


 

No. 5



โพสกระทู้ ( 4,071 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ได้เลยละครับ
แสดงว่า ถ้า override คือจะทำงานที่ตัวคลาสแม่ก่อน แล้วค่อยมาทำงานที่ตัวคลาสลูก ซินะครับ

ขอบคุณมากๆครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-03 12:19:51 By : lamaka.tor
 


 

No. 6



โพสกระทู้ ( 819 )
บทความ ( 0 )



สถานะออฟไลน์


เข้าใจว่า override
จะเป็นการแทนที่ตัวเดิมเลยครับ
แต่สามารถเรียกคำสั่งเดิม ผ่านตัว base.AddStandardItems ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-05-03 13:32:52 By : fonfire
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : C# WinApp ช่วยดู inheritance BindingNavigator ให้หน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , รับทำบัญชี , โรงงานผลิตครีม , สำนักงานบัญชี , รับจดทะเบียนบริษัท , Pangpond , รถมือสอง

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2020 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่