datagridview セルでユーザー コントロールをホストしようとしています。
msdnのハウツー記事を使用します
正常に動作します。しかし、テキスト ボックスとボタンを含むユーザー コントロールを使用すると、ユーザー コントロールのテキスト ボックスの値でセルの値が更新されません。
コードを変更します...
class CalendarEditingControl : DateTimePicker,
に...
class CalendarEditingControl : MyUserControl,
セルが編集モードのときにユーザーコントロールが表示されますが、テキストボックスの値はセルの値を更新しません。
何か案は?ありがとう。
これがCalendarEditingControlです...
class CalendarEditingControl : nsFinances.Design.Centres.Account_Registers.Controls.Amount, IDataGridViewEditingControl
{
DataGridView dataGridView;
private bool valueChanged = false;
int rowIndex;
public CalendarEditingControl()
{
//this.Format = DateTimePickerFormat.Short;
this.Width = 75;
}
// Implements the IDataGridViewEditingControl.EditingControlFormattedValue
// property.
public object EditingControlFormattedValue
{
get
{
//return this.Value.ToShortDateString();
return this.AmountValue;
}
set
{
if (value is String)
{
//try
//{
// // This will throw an exception of the string is
// // null, empty, or not in the format of a date.
// this.Value = DateTime.Parse((String)value);
//}
//catch
//{
// // In the case of an exception, just use the
// // default value so we're not left with a null
// // value.
// this.Value = DateTime.Now;
//}
this.AmountValue = (string)value;
}
}
}
// Implements the
// IDataGridViewEditingControl.GetEditingControlFormattedValue method.
public object GetEditingControlFormattedValue(
DataGridViewDataErrorContexts context)
{
return EditingControlFormattedValue;
}
// Implements the
// IDataGridViewEditingControl.ApplyCellStyleToEditingControl method.
public void ApplyCellStyleToEditingControl(
DataGridViewCellStyle dataGridViewCellStyle)
{
this.Font = dataGridViewCellStyle.Font;
//this.CalendarForeColor = dataGridViewCellStyle.ForeColor;
//this.CalendarMonthBackground = dataGridViewCellStyle.BackColor;
}
// Implements the IDataGridViewEditingControl.EditingControlRowIndex
// property.
public int EditingControlRowIndex
{
get
{
return rowIndex;
}
set
{
rowIndex = value;
}
}
// Implements the IDataGridViewEditingControl.EditingControlWantsInputKey
// method.
public bool EditingControlWantsInputKey(
Keys key, bool dataGridViewWantsInputKey)
{
// Let the DateTimePicker handle the keys listed.
switch (key & Keys.KeyCode)
{
case Keys.Left:
case Keys.Up:
case Keys.Down:
case Keys.Right:
case Keys.Home:
case Keys.End:
case Keys.PageDown:
case Keys.PageUp:
return true;
default:
return !dataGridViewWantsInputKey;
}
}
// Implements the IDataGridViewEditingControl.PrepareEditingControlForEdit
// method.
public void PrepareEditingControlForEdit(bool selectAll)
{
// No preparation needs to be done.
}
// Implements the IDataGridViewEditingControl
// .RepositionEditingControlOnValueChange property.
public bool RepositionEditingControlOnValueChange
{
get
{
return false;
}
}
// Implements the IDataGridViewEditingControl
// .EditingControlDataGridView property.
public DataGridView EditingControlDataGridView
{
get
{
return dataGridView;
}
set
{
dataGridView = value;
}
}
// Implements the IDataGridViewEditingControl
// .EditingControlValueChanged property.
public bool EditingControlValueChanged
{
get
{
return valueChanged;
}
set
{
valueChanged = value;
}
}
// Implements the IDataGridViewEditingControl
// .EditingPanelCursor property.
public Cursor EditingPanelCursor
{
get
{
return base.Cursor;
}
}
//protected override void OnValueChanged(EventArgs eventargs)
//{
// // Notify the DataGridView that the contents of the cell
// // have changed.
// valueChanged = true;
// this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
// //base.OnValueChanged(eventargs);
//}
}