आदेश टूलटिप प्रिंट और जबकि माउस सेल कुछ चीजें किया जा करने की जरूरत है खत्म हो गया है यह दृश्यमान करना प्रबंधन करने के लिए। ध्यान रखें कि मेरे ग्रिड को उदाहरण स्रोत में MyGrid कहा जाता है जबकि फ़ॉर्म को मेराफॉर्म कहा जाता है।
पहली बात यह है कि हम ऐसा करने के लिए 2 सहायक चर को परिभाषित करने की जरूरत है हम की जरूरत है:
private ToolTip _tooltip;
private Point _mouse;
फिर हम टूलटिप को परिभाषित, और घटना हम
की जरूरत के लिए एक कस्टम हैंडलर परिभाषित करने की जरूरत की जरूरत है इसके बाद हम किया जाता है
private void myGrid_CellValidating(object sender, CellValidatingEventArgs e)
{
string errorText = string.Empty;
// Are we really on a column currently?
if (e.ColumnIndex >= 0)
{
if (e.Value == null)
{
errorText = "No field may be empty";
}
}
// Has an error occured? If so don't let the user out of the field until its corrected!
if (errorText != string.Empty)
{
e.Cancel = true;
}
e.Row.ErrorText = errorText;
e.Row.Cells[e.Column.Name].ErrorText = errorText;
}
:
public myForm()
{
InitializeComponent();
....//your additional initialization code
_tooltip = new ToolTip();
this.myGrid.CellEditorInitialized += myGrid_CellEditorInitialized;
this.myGrid.CellValidating+= myGrid_CellValidating;
}
सेल सत्यापित करने के लिए कोड काफी सरल है
private void myGrid_CellEditorInitialized(objec sender, GridViewCellEventArgs e)
{
RadTextBoxEditor radTextBoxEditor = e.ActiveEditor as RadTextBoxEditor;
RadTextBoxEditorElement editorElement = radTextBoxEditor.EditorElement as RadTextBoxEditorElement;
editorElement.AutoToolTip = true;
TextBox myTextBox= (TextBox)editorElement.TextBoxItem.HostedControl;
myTextBox.MouseMove -= new MouseEventHandler(textBox_MouseMove);
myTextBox.MouseLeave -= new EventHandler(textBox_MouseLeave);
myTextBox.MouseMove += new MouseEventHandler(textBox_MouseMove);
myTextBox.MouseLeave += new EventHandler(textBox_MouseLeave);
}
इस प्रकार पहली हम संपादक (के "पाठ बॉक्स" परवाह किए बिना प्राप्त संपादक किस प्रकार वास्तव में है: यह है कि जब celleditor आरंभ नहीं हो जाता, कि टूलटिप मामले में तैयार किया जाता है यह आवश्यक है सुनिश्चित करने की आवश्यकता वहां) और इस टेक्स्टबॉक्स के लिए हमें आवश्यक घटनाएं सेट करें, क्योंकि हम जानना चाहते हैं कि उपयोगकर्ता के पास टेक्स्टबॉक्स पर माउस कब होता है, और जब नहीं।
void textBox_MouseMove(object sender, MouseEventArgs e)
{
if (mousePos != e.Location)
{
RadTextBoxEditor radTextBoxEditor = this.myGrid.ActiveEditor as RadTextBoxEditor;
GridDataCellElement gridCellElement = radTextBoxEditor.OwnerElement as GridDataCellElement;
if (gridCellElement != null && gridCellElement.ContainsErrors)
{
RadTextBoxEditorElement radTextBoxEditorElement = radTextBoxEditor.EditorElement as RadTextBoxEditorElement;
TextBox myTextBox = (TextBox)radTextBoxEditorElement.TextBoxItem.HostedControl;
_tooltip.Show(gridCellElement.RowInfo.Cells[gridCellElement.ColumnInfo.Name].ErrorText, myTextBox, new Point(e.Location.X + 8, e.Location.Y + 8));
_mouse = e.Location;
}
}
}
इस हम भी टूलटिप फिर जो हम mouseleave घटना से कोई लेना गायब होने देना होता है के बाद: जब टूलटिप प्रदर्शित किया जाएगा
अगले कदम, MouseMove समारोह को परिभाषित करने के लिए है इस प्रकार
void textBox_MouseLeave(object sender, EventArgs e)
{
RadTextBoxEditor radTextBoxEditor = this.myGrid.ActiveEditor as RadTextBoxEditor;
RadTextBoxEditorElement radTextBoxEditorElement = radTextBoxEditor.EditorElement as RadTextBoxEditorElement;
TextBox myTextBox = (TextBox)radTextBoxEditorElement.TextBoxItem.HostedControl;
Rectangle textBoxBounds = new Rectangle(myTextBox.PointToScreen(Point.Empty), myTextBox.Size);
if (!textBoxBounds.Contains(Control.MousePosition))
{
_tooltip.Hide(textBox);
}
}
इन चरणों के साथ हमारे पास एक टूलटिप है जो तब दिखाई देता है जब उपयोगकर्ता माउस को सेल में ले जाता है और जब वह सेल छोड़ देता है तब गायब हो जाता है।
मैंने अपनी पूर्व टिप्पणी को एक बिंदु में हटा दिया है, क्योंकि आप "माउसओवर" (या अधिक मूसोमोव) ईवेंट का उपयोग कर सही समाधान का उपयोग कर रहे हैं, हालांकि अभी तक एकमात्र हिस्सा नहीं है। – Thomas